我有一个界面
export interface Foo {
a: string;
b: string;
}
我现在想拥有另一个实现接口的所有键的类,但可以具有另一种类型:
export class Bar implements keysof(Foo) {
a: SomeNewType;
b: SomeNewType2;
}
这可能是打字稿吗?
背景:我希望Bar
类的键与Foo
答案 0 :(得分:1)
您可以使用按键映射来完成此操作。
export interface Foo {
a: string;
b: string;
}
type HasKeys<T> = {
[P in keyof T]: any;
}
export class Bar implements HasKeys<Foo> {
}
这将抱怨Bar
缺少a
和b
,但是如果您使用任何类型定义它们都可以。即
export class Bar implements HasKeys<Foo> {
a: number;
b: object;
}
答案 1 :(得分:0)
您可以将Foo
映射到消除属性类型限制的类型(使用any
)并实现它:
export interface Foo {
a: string;
b: string;
}
type AnyFoo = { [P in keyof Foo]: any }
export class Bar implements AnyFoo {
a: SomeNewType;
b: SomeNewType2;
}