Este posibil să denote objca any, dar care zădărnicește întregul scop de a folosi dactilografiate. obj = {}implică objo Object. Marcându - l ca anynu are sens. Pentru a realiza consistența dorită o interfață poate fi definită după cum urmează.
interface LooseObject {
[key: string]: any
}
var obj: LooseObject = {};
SAU pentru a face compact:
var obj: {[k: string]: any} = {};
LooseObjectpoate accepta câmpuri cu orice șir de caractere ca și cheie de anytip ca valoare.
obj.prop = "value";
obj.prop2 = 88;
Eleganța reală a acestei soluții este că puteți include typesafe câmpuri în interfața.
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;