MrK*_*Key 13 types typescript typescript-typings
我正在寻找定义不能容纳任何值的空对象类型的方法。
type EmptyObject = {}
const MyObject: EmptyObject = {
thisShouldNotWork: {},
};
Run Code Online (Sandbox Code Playgroud)
具有该类型的对象可以自由添加任何属性。我怎样才能强制MyObject始终是一个空对象呢?
我的实际用例是在接口内使用 EmptyObject 类型。
interface SchemaWithEmptyObject {
emptyObj: EmptyObject;
}
Run Code Online (Sandbox Code Playgroud)
Mac*_*ora 21
type EmptyObject = {
[K in any] : never
}
const one: EmptyObject = {}; // yes ok
const two: EmptyObject = {a: 1}; // error
Run Code Online (Sandbox Code Playgroud)
我们在这里所说的是,我们的所有最终属性EmptyObject只能是never,并且由于never没有代表值,所以不可能创建这样的属性,因此该对象将保持为空,因为这是我们创建它而不会出现编译错误的唯一方法。
Mik*_*gel 10
type EmptyObject = Record<any, never>
Run Code Online (Sandbox Code Playgroud)
这相当于Maciej Sikora 的答案,但使用了Record 实用程序类型。
| 归档时间: |
|
| 查看次数: |
5351 次 |
| 最近记录: |