增加了静态类型,可以在开发人员编写脚本时检测错误,使得代码质量更好,更健壮。
优势:
interface iMan {
name: string;
age: number;
}
// 接口可以进行声明合并
interface iMan {
hobby: string;
}
type tMan = {
name: string;
age: number;
};
// type不能重复定义
// type tMan = {}
// 继承方式不同, 接口继承使用 extends
interface iManPlus extends iMan {
height: string;
}
// type继承使用&,又称交叉类型
type tManPlus = { height: string } & tMan;
const aMan: iManPlus = {
name: "aa",
age: 15,
height: "175cm",
hobby: "eat",
};
const bMan: tManPlus = {
name: "bb",
age: 15,
height: "150cm",
};
any
: 动态的变量类型(失去了类型检查的作用)。never
: 永不存在的值的类型。例如:never 类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型。unknown
: 任何类型的值都可以赋给 unknown 类型,但是 unknown 类型的值只能赋给 unknown 本身和 any 类型。null & undefined
: 默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。当你指定了 --strictNullChecks 标记,null 和 undefined 只能赋值给 void 和它们各自。