数组:定义数组有两种方式。
第一种:普通方式:可以在元素类型后面接上 [],表示由此类型元素组成的一个数组,数组的项中不允许出现其他的类型:
//数组表现方式 类型[]
let arr: number[] = [1,2,3,4];
第二种:泛型方式 Array<元素类型>。
let list: Array<number> = [1,2,3];
元祖:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。比如,你可以定义一对值分别为 string和number类型的元组。
let x: [string,number];
x = ['Hello',10];
枚举:使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript 支持数字的和基于字符串的枚举。
// 利用 const 关键词也可以声明一组常量,例如,声明十二生肖的排位
const rat: number=1;
const cattle: number=2;
const tiger: number=3;
const rabbit: number=4;
const dragon: number=5;
上述只声明了 5 个,如果声明全排位,需要声明 12 个变量,并且注明类型,但是却多了很多重复性工作,利用数字枚举,我们可以轻松声明同样的一组常量。
1、数字枚举:默认情况下,从 0 开始为元素编号。 你也可以手动的指定成员的数值。
enum ChineseZodiac { rat, cattle, tiger, rabbit, dragon,}
2、字符串枚举:在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
enumPerson { name ='NAME', age ='AGE', love ='LOVE', hobby ='HOBBY',}
console.log(Person.name);// NAME
console.log(Person.hobby);// HOBBY
never:never 类型是任何类型的子类型,也可以赋值给任何类型,一般作为函数返回值。
// 返回never的函数必须存在无法达到的终点
function error(message:string): never { throw new Error(message); }
void:void 类型像是与 any 类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void。
function warn(): void {console.log('This is my warning message');}
any 任意类型:任意值(Any)用来表示允许赋值为任意类型。声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型。
let notSure: any=4;
notSure ='这是字符串';
notSure =false;
当你不希望类型检查器对某些值进行检查而是直接让它们通过编译阶段的检查可以使用 any 类型来标记这些变量。
联合类型:联合类型(Union Types)表示取值可以为多种类型中的一种。
let num: string | number;
num ='seven';
num =7;
联合类型使用 | 分隔每个类型。这里的 let num: string | number 的含义是,允许 num 的类型是 string 或者 number,但是不能是其他类型。
对象类型:object 表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 之外的类型。
declare function create(o:object|null): void;
create({name:0});// OK
create(null);// OK
create(2);// Error
create('字符串');// Error
create(false);// Error
create(undefined);// Error
类型断言:类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。
语法格式:<类型>值 或 值 as 类型
方式一
let someAny: any='my name is tony';
let strLength: number= ( <string> someAny).length;
strLength 作为 number 类型是不可以使用字符串方法的,所以这个时候我们可以使用类型断言对此进行转换。
方式二
let someAny: any='my name is tony';
let strLength: number= (someAny as string).length;