Wenn ich eine Eigenschaft habe, die eine Zeichenfolge oder ein Boolescher Wert sein kann, wie definiere ich sie:
interface Foo{
bar:string;
bar:boolean;
}
Ich möchte nicht auf Folgendes zurückgreifen:
interface Foo{
bar:any;
}
Ich denke nicht, dass es ohne möglich ist any
. Sie können eine der folgenden Fragen beantworten:
Habe ich eine Spezifikation übersehen und sie ist jetzt möglich? Ist so etwas geplant? Wurde eine Funktionsanforderung protokolliert?
Ich würde mir so etwas vorstellen:
interface Foo{
bar:string;
bar:boolean;
bar:any;
}
var x:Foo = <any>{};
x.bar="asdf";
x.bar.toUpperCase(); // intellisence only for string
typescript
Basarat
quelle
quelle
Antworten:
Dies wird üblicherweise als "Vereinigungstypen" bezeichnet. Das TypeScript-Typsystem ab 1.4 ermöglicht dies.
Siehe: Erweiterte Typen
quelle
Ab 2015 arbeiten Gewerkschaftstypen:
interface Foo { bar:string|boolean; }
quelle
Wenn Sie dies nicht sagen, wird Ihre Frage beantwortet, aber könnten Sie auf so etwas zurückgreifen?
interface Foo<T>{ bar:T; } function createFoo<T>(bar:T) : Foo<T>{ return {bar:bar}; } var sFoo = createFoo("s"); var len = sFoo.bar.length; var bFoo = createFoo(true); var result = bFoo.bar === true;
quelle
any