TypeScript入门教程
基本类型
number
string
boolean
enum // 枚举类型用于定义数值集合。
null //用 typeof 检测 null 返回是 object。
undefined //用于初始化变量为一个未定义的值,typeof 一个没有值的变量会返回 undefined。
never //never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
any //类型不明确的变量使用的一种数据类型
接口interface
//给定义的值添加类型
interface CodeType {
name: string;
code: number;
}
let codeList: CodeType[] = [{name: 'xx',code: 0}]
接口允许有任意属性
[propName: string]: any;
interface Person {
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
name: 'Tom',
gender: 'male'
};
泛型 (generics) : < T >
//
interface Response<T> {
code: number;
message: string;
success: boolean;
data: T;
}
interface StudentInfo{
name: string;
age: number;
}
let studentList: Response<StudentInfo[]> =
{
code: 200,
message: '获取信息成功!',
success: true,
data: [
{name:'张山',age:20},
{name:'李四',age:18}
]
}
继承 extends
interface StudentInfo{
name: string;
age: number;
}
interface girlStudent extends StudentInfo {
weight: number,
hair: string,
}
let zhangshan:girlStudent =
{
name:'张山',
age: 20,
weight: 120,
hair:'短发'
}
命名空间 namespace
//命名空间定义了标识符的可见范围,一个标识符可在多个名字空间中定义
//它在不同名字空间中的含义是互不相干的。
namespace BeiJIngSchool{
interface Classroom {
xxx;
}
interface Student {
xxx;
}
}
namespace AnHuiSchool {
interface Classroom {
xxx;
}
interface Student {
xxx;
}
}
类型推断
let fun = (param:string | number) {
if(<string>param === 'str'){
xxx
}
if(<number>param === 1){
xxx
}
}
单个类型和混合类型的定义
//单个类型数组
let arr: number[] = [1,2,3,4,5];
//混合数组
let arr:(string|number) = ['xx',8];
Dom的类型
let preview = document.getElementsByClassName(
'preview'
)[0] as HTMLElement;