typescript - 打字稿需要字段的子集
问题描述
是否可以创建类型约束,使类型包含对象的非可选键但不是所有键?例如:
class Foo {
key1: number
key2: Object
key3: <other type>
}
const X = {
key1: 'foo'
key2: 'bar'
foo: // compilation error
}
所以在这个模型X
中,有一个键的子集Foo
,并且编译时检查不存在的键。基本上Partial<Foo>
,但不像Partial<Foo>
我想要的那样,如果有人引用X.key3
它将无法编译,因为key3
没有在 X 上定义。这可能吗?
解决方案
如果我正确理解您的问题:您想要一个类型是另一种类型的子集,并且应该需要新类型的所有属性。
以下内容对您有用吗?
class Foo {
key1?: number;
key2?: Object;
key3?: string;
};
type Bar = Required<Pick<Foo, 'key1' | 'key2'>>;
const bar: Bar = {
key1: 3,
key2: {},
};
解释:
- 从另一种类型中选择一个键子集
Pick<T, 'prop1' | 'prop2' | ...>
- 使所需类型的所有属性
Required<T>
推荐阅读
- javascript - 尽管在函数中更早或更远地具有新值,但变量仍保留原始值
- python - 我正在尝试制作一个名称由用户输入定义的字典。我该怎么做呢?
- performance - 域名注册商的表现还是差异?
- python - 如何从二维数据框中已存在的行中创建多维数据框?
- c++ - 在循环 C++ 中分配字符串后未打印字符串
- jquery - JQuery Crossfading Images with background img
- javascript - Javascript中的伪同步编程,但是有更好的实现吗?
- python-3.x - Python Windows 10 64bit - 用于 trackpy 的 FFMPEG
- css - R 闪亮的垂直滑块,但鼠标水平拖动
- oracle - Oracle Escape 替换变量中的特殊字符