- undefined null为所有类型子类型
let a: number =undefined 编译通过
let notSure: any = 4
可以赋值任何类型
- 元组
let user: [string, number] = ['abc', 123]
user.push(item) item只能是字符或者数字
- interface
声明
interface Person {
id: number,
name: string,
age?: number,
readonly sex: number
}
- 可选值 变量后冒号前加?
age?: number
- 只读属性,属性key前加readonly,不可以通过 obj.key 更改对应value
readonly sex: number
- function
function add(x: number, y: number, z?:number): number: {
return x + y
}
let result = add(2, 3)
result为number, 中括号前面的类型限制函数返回的值得类型
参数中的可选参数后面不能再加确定的参数,报错
函数表达式写法
const add = (x: number): number => {
return x
}
const result = add(3) // result 是number
const result: string = add(2) // 报错
const result: (x: number) => number= add(?为啥可以)
interface iSum {
( x: number, y?: number): number
// 声明函数类型
}
const result: iSum = add // 成立
- 类型推论
ts会在没有明确声明一种类型时会根据值推断出一个类型
- 联合类型
let numberOrString: number | string
变量只能访问两种类型的共有的属性和方法
- 类型断言 as
function getLen(input: string | number): number = {
const str = input as string
}