允许对象文字,防止字符串

时间:2016-08-12 09:48:53

标签: typescript

以下作品:

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

1 个答案:

答案 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