Zhe*_*nko 2 javascript typescript
我可以在打字稿中实现这种类型吗?
type Someone = {
who: string;
}
type Someone = Someone.who === "me" ? Someone & Me : Someone;
Run Code Online (Sandbox Code Playgroud)
下面是一个最低限度的工作示例:
type Someone<T extends string> = {
who: T;
}
type Me = {
me: boolean;
}
type Thisone<T extends string> = T extends 'me' ? Someone<T> & Me : Someone<T>;
function whoami<T extends string>(who: T) {
return {
who,
me: who === 'me' ? true : undefined
} as Thisone<T>
}
const a = whoami('you');
const b = whoami('me');
a.who; // ok
a.me; // error
b.who; // ok
b.me; // ok
Run Code Online (Sandbox Code Playgroud)
在 TypeScript Playground 中进行演示。
小智 5
我认为受歧视的工会可以发挥作用:
type Me = {
who: 'me',
secret: string;
}
type Other = {
who: 'other',
}
type Someone = Me | Other;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6158 次 |
| 最近记录: |