2016-08-12 7 views
1

次作品を防ぐため、オブジェクトリテラル許可:は、文字列

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

はこれを試してみてください:

class Foo { 
    public bar(param: { [key: string]: any }): void { 

    } 
} 

Or:

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