1.联合类型
let b:'女'|'男'
let c: bollean | string
c=true;
c='hello'
2.any
any表示任意类型,一个变量设置类型为any相当于对该变量关闭了TS的类型检测
let a:any;
a=10;
a='hello';
a=true;
let a//隐式any,声明变量,如果不指定类型,默认any
3.unknown
any类型的变量,可以赋值给任意变量的值 ,unknown类型的变量,不能赋值给其它变量,不确定时用unkonwn
let a:unknown;
a=10;
a='hello';
a=true;
4.类型断言
编译器不知道,我们自己知道,可以用来告诉编译器变量的实际类型 两种用法都可以
s = e as string;
s = <string>e;
5.void
返回字符串或者num类型
function fn():string|number{
return
};
void 表示没返回值就是
function fn():void{
return
};
6.never
没有值never永远不会返回结果
function fn2(): never{
throw new Error('报错了');
}
7.object
语法:{ 属性名:属性值,属性名:属性值 }
let a: object;
a = {};//指定对象中包含哪些属性,
a = function () { };
let b: { name: string };//可以指定属性
let b: { name: string, age: numebr};
b ={name:'西游记'}//此时如果不写age属性会报错 可选属性
解决方法:
给属性后面加一个'?'问号;
let b:{name:String,age?:numben}
// let c:{name:string,[propName:string]:any};//不知道还需要加什么属性,
// propName可以随自己写任意属性名
限制参数 和 类型
设置函数结构的类型声明
语法:(形参:类型,形参:类型,...)=>返回值
let d: (a: number, b: number) => number;
d = function (n1, n2) {
return n1 + n2
}
8.array
// 语法:
// 2种声明方式
// 类型加[];
// let e: string[];
// let e: []<string>;
// e = ['q', 'd', 'f'];
// let a: number[];
// a = [1, 2, 3]
// let i: Array<string> = ['g', 'g']
// 元祖,固定长度的数组
// let h:[string,string];
// h=['hhh','ggg'];
9. 枚举
enum aaa{
male = 0;
female = 1
};
let i: { name: string, gen: aaa };
i = {
name: '西游记',
gen: aaa.male
};
console.log(i.gen===aaa.male)