2016-08-12 4 views
1

Die folgenden Werke:zulassen Objektliteral, verhindern Zeichenfolge

class Foo { 
    public bar(param: {}): void { 

    } 
} 

let foo: Foo = new Foo(); 
foo.bar(""); // Ok 
foo.bar({test: ""}); // Also Ok 

Ist es möglich, die Methodensignatur von bar, dass so zu ändern:

foo.bar({somePropertyWhichIdontKnowTheName: ""}); // Would be ok 
foo.bar(""); // Not Ok 

Antwort

1

starten:

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

    } 
} 

Oder:

type FooBarParams = { 
    [key: string]: any 
} 

class Foo { 
    public bar(param: FooBarParams): void { 

    } 
} 

Und dann:

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 
Verwandte Themen