Ts
是js的超集,可以编译成js,主要提供类型检查的作用
Ts内置类型
ts内置了一些类型,这些类型可以进行其他类型的类型转化
具体类型
Partial
作用
Partial 构造一个类型 使T里的所有属性都设置可选
实现
type Partial
使用
interface Exp1 {
name: string;
age:number;
}
type PartialExp1 = Partial
PartialExp1 的类型
type PartialExp1 = {
name?: string | undefined;
age?: number | undefined;
}
Required
作用
Required 使T 所有属性都设为required 与partial相反
实现
type Required
使用
interface Exp2 {
name?:string;
age:number;
}
type RequireExp2 = Required
RequireExp2的类型为:
type RequireExp2 = {
name: string;
age: number;
}
Readonly
作用
Readonly 将type中所有属性设置为只读
实现
type Readonly
使用
interface Exp3 {
name:string;
age:number;
}
type ReadonlyExp3 = Readonly
ReadonlyExp3:
type ReadonlyExp3 = {
readonly name: string;
readonly age: number;
}
Record
作用
Record
实现
type Record
使用
type Exp4 = 'A'|'B'|'C'
type RecordExp4 = Record
interface Exp5{
title:string;
}
type RecordExp5= Record
使用后类型为:
type RecordExp4 = {
A: number;
B: number;
C: number;
}
type RecordExp5 = {
A: Exp5;
B: Exp5;
C: Exp5;
}
Pick
作用
Pick
实现
type Pick
使用
interface Exp6 {
title:string;
age:number;
sex:number
}
type PickExp6 = Pick
结果为:
type PickExp6 = {
title: string;
age: number;
}
Omit
作用
Omit
实现
type Omit
使用
interface Exp7 {
title: string;
age:number;
sex:number
}
type OmitExp7 = Omit
结果为:
type OmitExp7 = {
age: number;
sex: number;
}
Exclude
作用
Exclude
实现
在extends 联合类型时 会分布式的去比较
type Exclude
使用
type Exp8 = 'title' | 'age' | 'sex';
type Exp9 = 'title'|'age';
type Exclude8 = Exclude
结果为
type Exclude8 = "sex"
Extract
作用
Extract
实现
type Extract
使用
type Exp10 = 'title' | 'age' | 'sex';
type Exp11 = 'title'|'age';
type ExtractExp10 = Extract
结果为
type ExtractExp10 = "title" | "age"
NonNullable
作用
NonNullable 从 T中排除 null 和 underfined 来构造一个类型
实现
type NonNullable
使用
type Exp12 = string|null|number|undefined;
type NonNullableExp12 = NonNullable
结果为
type NonNullableExp12 = string | number
Parameters
作用
Parameters 从 函数类型T中使用的参数类型 构造元组类型
实现
现在在有条件类型的 extends 子语句中,允许出现 infer 声明,它会引入一个待推断的类型变量。 这个推断的类型变量可以在有条件类型的 true 分支中被引用。 允许出现多个同类型变量的 infer。
type Parameters
使用
type Exp13 = (title:string,age:number)=>void;
type ParametersExp13 = Parameters
结果:
type ParametersExp13 = [title: string, age: number]
ConstructorParameters
作用
ConstructorParameters 从构造函数的参数类型来构造元组类型
实现
type ConstructorParameters
使用
interface Exp14 {
new(title:string,age:number):Object
}
type ConstructorParametersExp14 = ConstructorParameters
结果为:
type ConstructorParametersExp14 = [title: string, age: number]
ReturnType
作用
ReturnType 构造一个由函数类型 T返回类型组成的类型
实现
type ReturnType
使用
type Exp15 = (title:string,age:number) => string| number;
type ReturnTypeExp15 = ReturnType
结果:
type ReturnTypeExp15 = string | number
InstanceType
作用
InstanceType 返回由T中构造函数的实例组成的类型
实现
type InstanceType
使用
interface Exp17{
title:string;
age:number
}
interface Exp16 {
new(title:string,age:number):Exp17;
}
type InstanceTypeExp16 = InstanceType
结果
type InstanceTypeExp16 = Exp17
ThisParameterType
作用
ThisParameterType 返回T函数类型中this参数的类型,无返回unkonwn
实现
type ThisParameterType
使用
// 声明
type Exp18 = (this:number)=>number;
type ThisParameterTypeExp18 = ThisParameterType
// 未声明
type Exp181 = (age:number)=>number;
type ThisParameterTypeExp181 = ThisParameterType
结果:
// 声明
type ThisParameterTypeExp18 = number
// 未声明
type ThisParameterTypeExp181 = unknown
OmitThisParameter
作用
OmitThisParameter 从 T函数类型中移除this参数 如果不存在 返回T 存在这创建一个不带此参数的新函数类型
实现
type OmitThisParameter
使用
type Exp19 = (this:number,age:number,title:string)=>number;
type OmitThisParameterExp19 = OmitThisParameter
结果:
type OmitThisParameterExp19 = (age: number, title: string) => number
ThisType
作用
ThisType 在对象字面量中键入this 为Type,并可以通过上下文类型控制this类型
实现
使用限制:
在–noImplicitThis的选项下起效
仅支持在对象字面量上下文中使用,在其他地方使用相当于空接口
interface ThisType
使用
type Exp20 = {bar:()=>void}
type ThisTypeExp20 = Exp20 & ThisType<{title:string}>
const Exp20: ThisTypeExp20 = {
bar() {
console.log(this.title);
}
}
结果:
this: {
title: string;
}
Uppercase & Lowercase
作用
将StringType转为全大写/小写,ts通过内置关键字intrinsic在编译器实现
实现
type Uppercase = intrinsic
type Lowercase = intrinsic
使用
// Uppercase
type Exp21 = 'titLe';
type UppercaseExp21 = Uppercase
// Lowercase
type Exp22 = 'TiTLE';
type LowercaseExp22 = Lowercase
结果:
type UppercaseExp21 = "TITLE"
type LowercaseExp22 = "title"
Capitalize & Uncapitalize
作用
将 string type 首字母转为大写/小写,通过关键字 intrinsic编译阶段实现
实现
type Capitalize = intrinsic
type Uncapitalize = intrinsic
使用
//Capitalize
type Exp23 = 'title';
type CapitalizeExp23 = Capitalize
// Uncapitalize
type Exp24 = 'Title'
type UncapitalizeExp24 = Uncapitalize
结果:
type CapitalizeExp23 = "Title"
type UncapitalizeExp24 = "title"