福田网站建设信科网络,珠海网站营销,爱字幕app制作视频软件下载,中国查公司的网站一、基础类型
1、boolean 布尔类型
表示逻辑值#xff0c;可以是 true 或 false
let isBoolean:boolean false
2、number 数字类型
表示整数和浮点数#xff08;例如 42#xff0c;3.14159#xff09;#xff0c;不论是十进制、二进制、八进制还是十六进制#xff…一、基础类型
1、boolean 布尔类型
表示逻辑值可以是 true 或 false
let isBoolean:boolean false
2、number 数字类型
表示整数和浮点数例如 423.14159不论是十进制、二进制、八进制还是十六进制都是number类型
let decimal: number 6;
let hex: number 0xf00d;3、string 字符串类型
表示文本类型的数据使用单引号或双引号包围
let color: string blue;
color red;
4、array 数组类型
表示一个元素列表元素类型相同。有两种方式可以定义数组两种写法是等价的都可
let list: number[] [1, 2, 3];
let list: Arraynumber [1, 2, 3];5、tuple 元组类型
表示一个已知元素数量和类型的数组各元素的类型可以不必相同
let x: [string, number] [您好, 666]
6、enum 枚举类型
enum类型是对JavaScript标准数据类型的一个补充使用枚举类型可以为一组数值赋予友好的名字。在开发中后端返回的一些类型全是数值在前端代码中直接使用数据语义化不明显也影响阅读所以使用枚举转换一下更推荐
enum Color {Red 1, Green 2, Blue 4}
let c: Color Color.Green; //c就等于 2
7、any 任何类型
当不确定一个变量应该是什么类型的时候可以使用 any 类型。any 类型是 TypeScript 的一个强大特性它允许我们在编译时可选择地包含或移除类型检查。但建议尽量不要使用如果大量使用any那使用ts的意义就失去了
let notSure: any 666;//notSure没有指定具体类型这里的赋值不会报错即使notSure初始值是一个number类型
notSure maybe a string instead; 8、void 没有返回值的函数的返回类型
当一个函数没有返回值时采用void如果有返回值应该写返回值的具体类型
function warnUser(): void { console.log(This is my warning message); //这个函数没有返回值
}
9、Null
在 TypeScript 中null 值有自己的类型 null null是所有类型的子类型
let n: null null;
10、Undefined
在 TypeScript 中undefined 有它专门的类型 undefinedundefined是所有类型的子类型
let u: undefined undefined;
11、never
表示的是那些永不存在的值的类型 例如 never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型 变量也可能是 never类型当它们被永不为真的类型保护所约束时。never类型是任何类型的子类型也可以赋值给任何类型但除never类型本身其他的类型都不可以赋值给never类型包括any
function error(message: string): never { throw new Error(message);
}
12、Object 对象类型
表示非原始类型的对象类型如下参数O 和 lngLat都只接受对象类型数据传入
declare function create(o: object | null): void;
或
funtion getAddress(lngLat:{lng: string, lat: string} | null): string
二、高级类型
1、Intersection Types 交叉类型
使用 分隔不同的类型表示交叉类型是将多个类型合并为一个类型。这让我们可以把多个类型的成员合并到一个类型里可以理解为取这些类型的并集
type A {x: number}
type B {y: number}
type Combined A B//表示Combined类型必须同时具有x和y属性。
2、union types 联合类型
使用 | 分隔不同的类型联合类型表示一个值可以是几种类型之一所以 number | string | boolean 表示一个值可以是 number string或 boolean。 如果一个值是联合类型我们只能访问此联合类型的所有类型里共有的成员,可以理解为取 交集
interface Bird {fly();layEggs();
}interface Fish {swim();layEggs();
}function getSmallPet(): Fish | Bird {// ...
}let pet getSmallPet();
pet.layEggs(); // okay
pet.swim(); // errors swim不是共有成员
3、Type Aliases 类型别名
类型别名会给一个类型起个新名字。 类型别名有时和接口很相似但是可以作用于原始类型联合类型元组和字面量。
type Name string; //用Name 代替原始类型string
type NameResolver () string;
type NameOrResolver Name | NameResolver;
function getName(n: NameOrResolver): Name {//这里的函数返回值是string因为第一行代码对string进行了别名所以就可以用Name代替stringif (typeof n string) {return n;}else {return n();}
}
类型别名不能出现在声明右侧的任何地方
type Yikes ArrayYikes; // error
4、String Literal Types 字符串字面量类型
表示允许指定字符串必须的固定值和联合类型一起使用可以实现类似枚举类型的字符串
type SuperAdmin admin
type Easing ease-in | ease-out | ease-in-out; //与联合类型结合使用
5、Numeric Literal Types 数值字面量类型
与字符串字面量类型类似数值字面量类型用来约束取值只能是特定的数值。
function rollDice(value: 1 | 2 | 3 | 4 | 5 | 6) { console.log(Player rolled a ${value});
}
6、Type Guards 类型保护
类型保护就是一些表达式它们会在运行时检查以确保在某个作用域里的类型。 要定义一个类型保护我们只需要简单地为一个函数的返回值为类型谓词。
pet is Fish就是类型谓词。 谓词为 parameterName is Type这种形式
function isFish(pet: Fish | Bird): pet is Fish {return (Fishpet).swim ! undefined;
}
还可以用typeof 进行类型保护, TS本身会把typeof识别成类型保护所以可以直接在代码中使用
function padLeft(value: string, padding: string | number) {if (typeof padding number) {return Array(padding 1).join( ) value;}if (typeof padding string) {return padding value;}throw new Error(Expected string or number, got ${padding}.);
} 7、Mapped Types 映射类型
它基于旧类型但是以某种方式对每个属性进行修改这就是映射类型。例如你可以获取一个类型的所有属性并使其成为只读
//旧接口
interface PersonPartial {name: string;age: number;
}//映射旧接口获得新接口
type ReadonlyT {readonly [P in keyof T]: T[P];
}
type ReadonlyPerson ReadonlyPerson;//新接口等同如下
interface PersonReadonly {readonly name: string;readonly age: number;
}
8、Conditional Types 条件类型
条件类型是一种表达形式它类似于 JavaScript 中的三元运算符用于选择两种类型之一。 条件类型在描述输入与输出类型之间关系的时候非常有用并且能用来提取复杂类型中的信息。
type IsStringTypeT T extends string ? true : false; type A IsStringTypehello; // type A: true
type B IsStringTypenumber; // type B: false