安装typescript
环境和ts-node:
npm install -g typescript
npm install -g ts-node
实际 *** 作:
ts-node xx.ts
二、&交叉类型
交叉类型就是把两种类型组合起来,下列是正常的交叉组合
interface Name {
firstName: string;
lastName: string;
}
interface BaseInfo {
sex: 'male' | 'female';
age: number;
}
type UserInfo = Name & BaseInfo;
const user: UserInfo = {
firstName: 'Jack',
lastName: 'Ma',
sex: 'male',
age: 18
};
展示错误的类型
interface Props1 {
size: string;
}
interface Props2 {
size: number;
}
type Props = Props1 & Props2
let props: Props = {
size: 'kang'
}
上面用&交叉类型很明显会生成一个既是字符串,也是数组的类型即是never
类型
type Props = {
size: string & number
}
下面我们看一串代码exhaustiveCheck
为什么会报错:
type AllType = 'a' | 'b' | 'c'
function handleValue(val: AllType) {
switch (val) {
case 'a':
// val 在这里收窄为 'a'
break;
case 'b':
// val 在这里收窄为 'b'
break;
default:
// val 在这里收窄为 never
const exhaustiveCheck: never = val;
break;
}
}
原因是:我们这边val只可以是’c’也可能是never,改成这样就不会报错了!
type AllType = 'a' | 'b'
function handleValue(val: AllType) {
switch (val) {
case 'a':
// val 在这里收窄为 'a'
break;
case 'b':
// val 在这里收窄为 'b'
break;
default:
// val 在这里收窄为 never
const exhaustiveCheck: never = val;
break;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)