如何解决从扩展接口中排除 `[key: string]: string;`
这是我的问题:
我想通过执行 keyof Type1
来获取接口的键,问题是 Type1
扩展了 Type2
并且其中包含 [key: string]: SetofValueTypes;
,所以 { {1}} 在不重新定义类型的情况下是无用的。我仍然想保留 keyof Type1
支票。所以我想保留 SetofValueTypes
的当前定义,但只需要 Type1
的键类型而不需要 Type1
。
整个事情看起来有点像这样(这与我的界面不匹配,只是一个简化的表示):
Type2
我猜这是不可能的,因为 // Initial base type
interface Type2 {
[key: string]: SetofValueTypes;
}
// New type that extends Type2 to make sure values are one of possible types
interface Type1 extends Type2 {
email: string;
phone: number;
}
// Extracting keys from Type1
type KeysOfType1 = keyof Type1;
// The key can be any string,because of [key: string] deFinition in Type2
const someKey: KeysOfType1 = 'can be anything';
和 'email'
文字类型是 'phone'
类型的子集,但我真的希望有一种方法无需重新定义 {{1} } 因为 string
在我的情况下相当大。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。