对于TypeScript,可以向下兼容JavaScript,TypeScript 的主要好处是它可以高亮代码中的意外行为,从而降低出现错误的可能性。
推断类型
TypeScript可以推断变量的类型,不需要额外的标注
定义类型
有时候,类型比较复杂,TypeScript无法准确推断。所以需要interface声明描述对象:
interface User {
name: string;
id: number;
}
使用的时候:
const user: User = {
name: "Hayes",
id: 0,
};
如果不匹配,TypeScript会发出警告。
同样地,定义类型也可以用于普通的函数等:
function func(user: String): Number{}传入的参数是String类型,返回的类型是Number类型。
可以选择的类型如下:JavaScript 中已经有一小部分原始类型可用: boolean、bigint、null、number、string、symbol、undefined,可在界面中使用。 TypeScript 用更多的东西扩展了这个列表,比如 any(允许任何东西)、unknown(确保使用这个类型的人声明了这个类型是什么)、never(这个类型不可能发生)和 void(一个函数返回 undefined 或没有返回值)。
联合
使用联合,你可以声明一个类型可以是多种类型之一。 例如,你可以将 boolean 类型描述为 true 或 false:type MyBool = true | false;
但是MyBool被推断为Boolean类型。
联合也可以被适用于函数,用来传入不同类型的参数。
function getLength(obj: string | string[]) {}
泛型
泛型为类型提供变量。 一个常见的例子是数组。 没有泛型的数组可以包含任何东西。 具有泛型的数组可以描述数组包含的值。
interface Backpack<Type> {
add: (obj: Type) => void;
get: () => Type;
}
例如:传入参数类型不同的时候,Type也不同