Es ist möglich , zu bezeichnen , objwie any, aber das Niederlage des ganzen Zwecks der Typoskript mit. obj = {}impliziert objein Object. Kennzeichnung als anykeinen Sinn macht. Um das erreichen kann die gewünschte Konsistenz eine Schnittstelle wie folgt definiert werden.
interface LooseObject {
[key: string]: any
}
var obj: LooseObject = {};
Oder um es kompakt zu machen:
var obj: {[k: string]: any} = {};
LooseObjectkann als Schlüsselfeld mit einem beliebigen Zeichenkette übernehmen und anyals Wert eingeben.
obj.prop = "value";
obj.prop2 = 88;
Die wirkliche Eleganz dieser Lösung ist, dass Sie typsichere Felder in der Schnittstelle enthalten.
interface MyType {
typesafeProp1?: number,
requiredProp1: string,
[key: string]: any
}
var obj: MyType ;
obj = { requiredProp1: "foo"}; // valid
obj = {} // error. 'requiredProp1' is missing
obj.typesafeProp1 = "bar" // error. typesafeProp1 should be a number
obj.prop = "value";
obj.prop2 = 88;