let b1:bigint = 999999999999999999n
const b2:bigint = BigInt("999999999999999999")
八、any
用户输入或第三方库等不知道的输入类型
let value:any = 66
value = "996"
九、void 函数没有返回值
function fn(str:string):void{
console.log(str)
}
十、unkonwn
unkonwn在实际开发中常用代替any,unknown 类型不能赋值给除了 unknown 或 any 的其他任何类型,使用前必需显式进行指定类型,或是在有条件判断情况下能够隐式地进行类型推断的情况
联合类型中有unknown,那么最终得到的都是unknown类型
type U = unknown | string
unknown不能调用属性和方法,但可以使用类型断言或类型保护访问属性
let value:unknown;
value = 'typeScript';
类型断言
(value as string).length
if (typeof value === 'string') {
value.length
}
十一、never
假如同事改了 All 的类型就会报一个编译错误,用于确保val永远是穷尽的
interface All {
type:string,
value:any
}
function handleValue(val: All) {
switch (val.type) {
case 'type1':
break
default:
// val 在这里是 never
const exhaustiveCheck: never = val
break
}
}
十二、对象
最好使用interface替代
declare function fn(o: object | null): void;
fn({ prop: 996 }); // OK
fn(null); // OK
fn("内卷"); // Error
使用interface限制对象属性
interface Obj {
name: string;
}
let obj: Obj = {
name: "luffy",
};
十三、数组
let arr:number[] = [4, 5, 6]
let arr1: Array<string>
innterface Obj{
type:string
value:any
}
let arr2:Array<Obj>
十四、元组tuple
固定长度的数组
let tu:[string, number, boolean] = ["abcd", 5, false]
十五、枚举enum
enum sex{
man = 1
male = 2
}
console.log(sex.man) //1