#tag
类型区分的笔记
any
一般情况下,我们并不知道某个变量的具体类型或者在编程过程中,因为一些原因我们并不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。一般这种情况为我们就会使用any
这个类型声明
unknown
never
字面量类型
| const msg0: 'Hello World' = 'Hello World' let msg1: string = 'HelloWorld'
|
意义:结合 联合类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| let align: 'left' | 'right' | 'center' = 'left' align = 'right' align = 'center'
align = 'xxxx'
=>
type Alignment = 'left' | 'right' | 'center' let align: Alignment = 'left' align = 'right' align = 'center'
align = 'xxxx'
|
字面量推理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| type Method = "GET" | "POST";
type Option = { url: string; method: Method; };
function request(url: string, method: Method) {}
const option: Option = { url: "", method: "GET", };
request(option.url, option.method);
|
1 2 3 4 5 6 7 8 9 10 11
| type Method = "GET" | "POST";
function request(url: string, method: Method) {}
const option = { url: "", method: "GET", } as const;
request(option.url, option.method);
|
函数类型
() => void
1 2 3 4 5 6
| function foo() {} type FooFnType = () => void function bar(fn: FooFnType) { fn() } bar(foo)
|
void
定义函数的返回类型为void时,返回什么类型都是可以的。