以下作品:
class Foo {
public bar(param: {}): void {
}
}
let foo: Foo = new Foo();
foo.bar(""); // Ok
foo.bar({test: ""}); // Also Ok
是否可以更改bar
的方法签名,以便:
foo.bar({somePropertyWhichIdontKnowTheName: ""}); // Would be ok
foo.bar(""); // Not Ok
答案 0 :(得分:1)
试试这个:
class Foo {
public bar(param: { [key: string]: any }): void {
}
}
或者:
type FooBarParams = {
[key: string]: any
}
class Foo {
public bar(param: FooBarParams): void {
}
}
然后:
let foo: Foo = new Foo();
foo.bar(""); // Error: Argument of type 'string' is not assignable to parameter of type { [key: string]: any }
foo.bar({test: ""}); // ok