use*_*543 5 generics recursion types typescript
我想TRecursive基于我的数据接口创建递归的泛型类型IOne,ITwo并且IThree如下所示相关.
结果类型TRecursive<IOne>应具有与IOne不同值类型相似的关系boolean,例如下面的示例.
interface IOne {
pk: number;
name: string;
two: ITwo;
}
interface ITwo {
pk: number;
name: string;
three: IThree;
}
interface IThree {
pk: number;
name: string;
}
type TRecursive<T> = {
[P in keyof T]?: TRecursive<T[P]> | boolean;
};
const test: TRecursive<IOne> = {
pk: true,
name: true,
two: {
pk: true,
name: true,
anything: true, // type error as expected
three: {
pk: true,
name: true,
anything: true // no error - why?
}
}
};
Run Code Online (Sandbox Code Playgroud)
typescript@2.3.3当我需要在相关类型中进行类型检查时,我无法正常工作.
我添加anything了未在我的数据类型中定义的键,所以我希望typescript在这里向我显示错误.正如预期的那样,我在一个深度(内部键two)中看到错误,但是相同的键不会触发两个级别的深度错误(内部键three).
这是为什么?有什么东西可以用打字稿来实现吗?
这在 TS 中很常见。它会在第一个错误处停止,然后继续查找下一个错误。
const test: TRecursive<IOne> = {
pk : true,
name: true,
two : {
pk : true,
name : true,
// anything: true,
three: {
pk : true,
name : true,
anything: true, // error
},
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |