ts 总结 二
1、声明变量:声明变量的类型及初始值
var name: string = 'zhangsan'
2、类型断言
手动指定一个值的类型,允许变量从一种类型更改未另一种类型
语法:
<类型>值 // react 中这种不能使用
// 或者
值 as 类型
3、类型推断;
当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。
4、联合类型
联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。
5、数组
interface namelist {
[index:number]:string
}
// 类型一致,正确
var list2:namelist = ["a","b","c"]
// 错误元素 1 不是 string 类型
// var list2:namelist = ["a",1,"c"]
6、对象
interface ages {
[index:string]:number // 任意值为number的对象类型
}
var agelist:ages;
// 类型正确
agelist["runoob"] = 15
var Iobj:Child = { v1:12, v2:23}
// 等价 var Iobj =<Child>{ v1:12, v2:23}
- 类型别名: type
type Text = string | { text: string };
type Coordinates = [number, number];
type Callback = (data: string) => void;
7、any 是一种禁用类型检查并有效地允许使用所有类型的类型。将 any 设置为特殊类型 any 将禁用类型检查:
8、类型: unknown,unknown 与 any 类似,但更安全。TypeScript 将阻止使用 unknown 类型
9、never 类型:代表从不会出现的值,这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环),无论何时定义错误,never 都会有效地抛出错误。很少用
10、泛型:允许创建 "类型变量",可以用来创建不需要显式定义所使用类型的类、函数和类型别名。泛型使编写可重用代码变得更容易。
function createPair<S, T>(v1: S, v2: T): [S, T] {
return [v1, v2];
}
console.log(createPair<string, number>('hello', 42)); // ['hello', 42]
11、工具类型:
TypeScript 附带了大量类型,可以帮助进行一些常见的类型操作,通常称为工具类型(实用类型)。
本章介绍了最流行的工具类型(Utility Type)。
- Partial
Partial 更改对象中的所有属性为可选。
interface Point {
x: number;
y: number;
}
let pointPart: Partial<point> = {}; // `Partial` 使得 x 与 y 都变成可选
pointPart.x = 10;
- Required
Required 更改对象中的所有属性为必须的。
interface Car {
make: string;
model: string;
mileage?: number;
}
let myCar: Required<car> = {
make: 'Ford',
model: 'Focus',
mileage: 12000 // `Required` 强制 mileage 必须定义
};
- Record
Record 是定义具有特定键类型和值类型的对象类型的简写方式。
const nameAgeMap: Record<string, number=""> = {
'Alice': 21,
'Bob': 25
};
// Record<string, number> 相当于 { [key: string]: number }
- Omit
Omit 从对象类型中删除 key。 - Pick
Pick 从对象类型中删除除指 key 以外的所有 key。 - Exclude
Exclude 从联合类型中删除类型。 - ReturnType
ReturnType 提取函数类型的返回类型。
https://cankaoshouce.com/typescript/typescript-utility-types.html
https://jkchao.github.io/typescript-book-chinese/compiler/scanner.html
7、拓展接口(对象)
// 尝试创建一个新的接口并扩展它,如下所示
interface Rectangle {
height: number,
width: number
}
interface ColoredRectangle extends Rectangle {
color: string
}
const coloredRectangle: ColoredRectangle = {
height: 20,
width: 10,
color: "red"
};
console.log(coloredRectangle);