类型注解
作用:相当于强类型语言中的类型声明
语法:(变量/函数):type
数据类型
新建src/datatype.ts,里面定义各种类型的数据
原始类型:let bool: boolean = true let num: number = 123 let str: string = 'abc'数组:
let arr1: number[] = [1, 2, 3] let arr2: Array<number> = [1, 2, 3] PS: 以上的含义是该数组只能是number; 但如果我们需要添加其他类型,就要采用联合类型方式: let arr2: Array<number | string> = [1, 2, 3, '4']元组 - 是特殊的数组,它限定了数组元素的类型和个数:
let tuple: [number, string] = [0, '1'] PS: 我们可以通过push方法为元组添加新元素,但是不能越界访问,因此实际工作中不建议这样使用: tuple.push(2) console.log(tuple) // [0, '1', 2] tuple[2] // 报错函数
let add = (x: number, y: number): number => x + y PS: 以上包括参数和返回值类型注解,通常返回值类型注解可以省略,这就利用了ts的类型推断功能。 也可以这样定义: let compute: (x: number, y: number) => number compute = (a, b) => a + b对象
let obj: object = {x: 1, y: 2} obj.x // 提示错误,因为不确定里面是否包含x属性 // 改成这样就可以了: let obj: {x: number, y: number} = {x: 1, y: 2} obj.x symbol - 含义是具有唯一的值: let s1: symbol = Symbol() let s2 = Symbol() console.log(s1 === s2) // false undefined/null: let un: undefined = undefined let nu: null = null num = undefined // 提示错误 num = null // 提示错误 PS: 把一个变量赋值成undefined/null时,只能取undefined/null值,不能取其他类型的值;反之,其他类型却可以赋值给undefined/null,只不过需要对tsconfig.json做如下设置: "strictNullChecks": false, PS: 但是这种方式一般不推荐,如果非要对其他类型赋值undefined/null,最好使用联合类型,上面就不会报错了: let num: number | undefined | null = 123void是js中的一种操作符,它可以让任何表达式返回undefined,如:
void 0 // undefined PS: 在ts中,void类型表示没有任何返回值的类型,比如一个没有任何返回值的函数: let noReturn = () => {} any类型 - 不定义类型时默认为any类型,可以任意赋值,不建议使用 never表示永远不会有返回值的类型,有两种情况:抛出异常函数和死循环函数 let error = () => { throw new Error('error') } let endless = () => { while(true) {} }
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did223478