// 定义根本数据类型let str: string = 'title';let num: number = 20;let bool: boolean = true;let obj: null = null;let undef: undefined = undefined;// 定义联结类型let l: number | string;l = 100;l = 'title';// 定义任意类型let any_temp: any;any_temp = [];any_temp = '任意类型';// 数组类型let arr1: number[] = [1, 2, 3, 4];let arr2: string[] = ['a', 'b', 'c', 'd'];let arr3: any[] = [1, 'a', null];// 数组泛型let arr4: Array<number> = [1, 2, 3, 4];let arr5: Array<string> = ['a', 'b', 'c', 'd'];let arr6: Array<number | string> = [1, 'a', 'xxx'];// 定义对象类型// 定义对象类型之前须要定义好对应的接口interface Person { name: string, date: string, sex: string, age?: number, // 可选属性 [propName: string]: any //任意属性}let person: Person = { name: 'lk', date: '2012-12-12', sex: '男', age: 12, action: (): void => { console.log('你好!'); }}person.height = '168cm';person.weight = '52kg';// 定义函数:输出类型,输入类型function s1(x: number, y: number): number { return x + y;}s1(1, 2);function s2(x: number, y?: number): number { // y为可选参数 if (y) { return x + y; } else { retun x; }}s2(1);s2(2,3);// 泛型的应用// 泛型的概率:在定义函数、类、接口时不指定类型,在应用的时候才指定类型的一种个性;function s3<T>(x: T, y: T): T{ return x + y;}s3<number>(1, 3);