八个 javaScript 的类型
1.布尔类型
1 | let bool: boolean = false; |
2 | bool = true; |
3 | // bool = 'hello' // 不能将类型“"hello"”分配给类型“boolean”。 |
4 | // bool = 123 // 不能将类型“123”分配给类型“boolean”。 |
5 | |
6 | // 赋给 bool 的值也可以是一个计算之后结果是布尔值的表达式,比如: |
7 | |
8 | let b = !!0; |
9 | console.log(b); // false |
2.数值类型
1 | let num: number = 0; |
2 | num = 123; |
3 | num = 0b1111011; // 二进制的 123 |
4 | num = 0o173; // 八进制的 123 |
5 | num = 0x7b; // 十六进制的 123 |
6 | |
7 | // num = '100' // 不能将类型“"100"”分配给类型“number”。 |
8 | // num = false // 不能将类型“false”分配给类型“number”。 |
3.字符串
字符串类型中你可以使用单引号和双引号包裹内容,但是可能你使用的 tslint 规则会对引号进行检测,使用单引号还是双引号可以在 tslint 规则里配置。你还可以使用 ES6 语法——模板字符串,拼接变量和字符串更为方便。
1 | let str: string = "hello"; |
2 | let st: string = `${str}`; |
3 | |
4 | // str = 100 // 不能将类型“100”分配给类型“string”。 |
5 | // str = false // 不能将类型“false”分配给类型“string”。 |
6 | |
7 | let s: "STRING"; |
8 | // 另外还有个和字符串相关的类型: |
9 | // 即把一个字符串字面量作为一种类型,比如上面的字符串"STRING",当你把一个变量指定为这个字符串类型的时候,就不能再赋值为其他字符串值了,如: |
10 | // s = 'a' // 不能将类型“"a"”分配给类型“"STRING"”。 |
4.数组
1 | // 在 TypeScript 中有两种定义数组的方式: |
2 | let list1: number[] = [1, 2, 3]; |
3 | let list2: Array<number> = [1, 2, 3]; |
4 | |
5 | // let list3: ReadonlyArray<number> = [1, 2, 3] // 即只读数组。 |
6 | |
7 | list3 = []; |
8 | |
9 | // console.log(list3) |
第一种形式通过number[]
的形式来指定这个类型元素均为 number 类型的数组类型,
这种写法是推荐的写法,
也可以使用第二种写法。
注意,这两种写法中的number
指定的是数组元素的类型,你也可以在这里将数组的元素指定为任意类型。
如果你要指定一个数组里的元素既可以是数值也可以是字符串,那么你可以使用这种方式:number|string[]
,
这种方式我们在后面学习联合类型的时候会讲到。
当你使用第二种形式定义时,tslint 可能会警告让你使用第一种形式定义,如果你就是想用第二种形式,可以通过在 tslint.json 的 rules 中加入"array-type": [false]
关闭 tslint 对这条的检测。
5.null
1 | let u: undefined = undefined; |
2 | // 这里可能会报一个 tslint 的错误:Unnecessary initialization to 'undefined',就是不能给一个值赋 undefined,但我们知道这是可以的,所以如果你的代码规范想让这种代码合理化,可以配置 tslint,将"no-unnecessary-initializer"设为 false 即可 |
6.undefined
1 | let n: null = null; |
7.object
1 | let obj: object; |
2 | |
3 | obj = { name: "object" }; |
4 | |
5 | // console.log(obj.name) // 类型“object”上不存在属性“name” |
8.symbol
1 | let sym: symbol = Symbol("你好"); |
2 | |
3 | console.log(sym); |