//1.原始类型
let bool: boolean = false
let num: number = 123
let str: string = '恰烂钱'
//2.数组
let arr2: number[] = [1, 3, 5]
let arr1: Array<number> = [1, 3, 5]
let arr3: Array<number | string | object> = [1, '2', {}]
//3.元组
let tuple: [number, string] = [0, '5']
tuple.push(2)
console.log(tuple)
//console.log(tuple[2]) //err 可以添加但是无法访问
//4.函数
let add = (x: number, y: any): number => x + y
console.log(add(5, 's'))
console.log(typeof (add(5, 's')))//string\
//限制参数类型、返回值类型后 并不影响在实际调用中传入其他参数类型
let compute: (x: number, y: number) => number
//在调用compute时编译器会根据之前的类型描述做出提醒、相当于使用说明,但是可以不遵守
compute = (a, b) => a + b
//5.对象
let obj: { x: number, y: number } = { x: 1, y: 2 }
//obj.x = '3' //--报错
obj.x = 5
//6.symbol
let s1: symbol = Symbol()
let s2: symbol = Symbol()
console.log(s1 === s2) // false
//7.underfind , null
let und: undefined = undefined
let nul: null = null
//num = und 和 num = nul 都会报错
//null underfind 在TS中是任何类型的子类型,是可以赋值给其它类型的
//在tsconfig.json中设置strictNullChecks为false,实现任何类型都可以赋值 null 和 underfind
//8.void 它表示没有任何类型。
//声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
let noReturn = () => {}
//9.any 和写JS一样了,所以不建议使用any类型
let x
x = 1
x = '2'
x = []
x = ()=>{}
//10.never
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
网友评论