TS常见类型概述
基元类型
string、number、boolean
null和undefined
// 当用到null和undefined跟其他类型的联合类型时,多要进行一个非空的类型缩小方式
// 当开发者知道变量不会是null和undefined时,可以用'!'断言它非空
function fn(x) {
return x!.toFixed
}
biginit、symbol
// biginit
let n:biginit = Biginit(100)
let n:bigint = 100n
// symbol
const str1:symbol = Symbol('abc')
const str2:symbol = Symbol('abc')
文字类型(常在联合类型中使用)
function fn(x:'left' | 'right') {}
function fn():0 | 1{}
function fn(x:Option | 'auto') {}
数组
// type[],type为任意合法类型
let arr:number[] = [1,2,3]
// Array<type>,type为任意合法类型
let arr: Array<number> = [1,2,3]
对象类型和接口
// obj为对象类型,其中可有可无的属性用问号。last为undefined和string的联合类型,使用时注意类型缩小
function fn(obj: {first: string, last?: string}) {}
// 定义对象的另外一种方式是接口;一般情况下接口都可以用类型别名的方式去定义
interface Point {
x: number;
y: number;
}
函数类型
// 参数和返回值都有类型注释
function fn(name: string):void {}
枚举(如果要用到一组命名常量之一)
TS独有,添加到JS运行时的内容
enum Direction {
Up = 1,
Down,
Left,
Right
}
联合类型
联合类型使用’|',注意在使用到这种类型的数据时,多数需要类型缩小
类型断言
类型断言有编译器删除,不会影响代码运行时行为
对值进行断言,在值后面加as type,或者在值的签名加<type>
类型断言只能指定更大的范围或者更小的范围,不能是交叉的情况eg: ‘abc’ as number
const dom = domcument.getElementById('main) as HTMLElement
const dom = <HTMLElement>domcument.getElementById('main)
const x = ('abc' as unknown) as number
类型别名(被反复用到的话)
type Point = {
x: number;
y: number;
}
type Id = number | string