类型推断
- 可根据变量定义时的值,推断出该变量的类型 ```typescript let name = ‘zxc’ // 可以推断出 name 的类型为string let arr = [1, ‘a’] // 可以推断出 arr 的类型为联合类型 Array (number | string)
<a name="YXHx8"></a>### 类型的兼容性<a name="azlNJ"></a>#### 接口兼容性- 比如 声明一个接口,我们定义的变量的类型就是该接口,赋值时要满足接口中定义的成员变量```typescriptinterface InfoInterface {name: string;info: {age: number,}}let infos: InfoInterface = { name: 'zxc', info: { age: 18} }
函数的兼容性
参数个数
- 参数个数要小于等于定义的函数类型中定义的参数个数 ```typescript const arr = [1, 2, 3] arr.forEach((items, index, array) => {
})
arr.forEach((items) => { // 这样也可以使用 })
**参数类型**- 参数类型要一致**可选参数/剩余参数**- 如果想要同时操作多个参数,或者并不知道会有多少参数传递进来的时候,我们可以使用剩余参数。- 剩余参数会被当做个数不限的可选参数,[参考链接](https://blog.csdn.net/weixin_46618182/article/details/113530735)```typescriptfunction add(...arg: number[]): number {let sum = 0;for(let i = 0; i < arg.length; i++) {sum += arg[i];}return sum;}let result = add(1, 2, 3);let result_ = add(1, 2, 3, 4) // 也可以
返回值类型
函数重载
类的兼容性
- 比较两个值,他们的类类型是否相等,比较的是 该类创建的实例(包括实例上的属性),类里面的静态(static)成员变量和 constructor 函数不比较
泛型的兼容性
interface Data<T> {data: T}let data1 = Data<number>;let data2 = Data<string>;
