导航
增加了静态类型,可以在开发人员编写脚本时检测错误,使得代码质量更好,更健壮。
优势:
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 和它们各自。void
: 没有任何类型。例如:一个函数如果没有返回值,那么返回值可以定义为void。例如,该值来自 API 调用或用户输入。any 类型 允许你将任何类型的值分配给 any 类型的变量
let person: any = "Foo";
// 以下是一个演示任何类型用法的示例
// json可能来自第三方API
const employeeData: string = `{"name": "arry老师", "salary": 60000}`;
// 解析JSON以构建employee对象
const employee: any = JSON.parse(employeeData);
console.log(employee.name);
console.log(employee.salary);
void
表示变量没有类型,它充当与任何相反的类型,它在不返回值的函数中特别有用null 或 undefined 值
分配给该变量function notify(): void {
alert("Hello World !");
}
可以
// 函数声明
interface Say {
(name: string): viod;
}
let say: Say = (name: string):viod => {}
// Array 声明
interface NumberArray {
[index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];
// Class 声明
interface PersonalIntl {
name: string
sayHi (name: string): string
}
属性或方法访问: 当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法。
function getLength(something: string | number): number {
return something.length;
}
// index.ts(2,22): error TS2339: Property 'length' does not exist on type >'string | number'.
// Property 'length' does not exist on type 'number'.
function getString(something: string | number): string {
return something.toString();
}
// 公共方法和属性可以访问
?. 可选链
遇到 null 和 undefined 可以立即停止表达式的运行。?? 空值合并运算符
当左侧操作数为 null 或 undefined 时,其返回右侧的操作数,否则返回左侧的操作数。! 非空断言运算符
x! 将从 x 值域中排除 null 和 undefined!.
在变量名后添加,可以断言排除undefined和null类型_ 数字分割符
分隔符不会改变数值字面量的值,使人更容易读懂数字 .e.g 1_101_324。**
求幂npm install @types/包名 --save
;public
: 成员都默认为public
,被此限定符修饰的成员是可以被外部访问;private
: 被此限定符修饰的成员是只可以被类的内部访问;protected
: 被此限定符修饰的成员是只可以被类的内部以及类的子类访问;readonly
: 关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化。TypeScript 不支持静态类,
在 TypeScript 中,你可以将任何数据和函数创建为简单对象,而无需创建包含类。