Είναι δυνατόν να υποδηλώσει objόπως any, αλλά νικά ολόκληρο το σκοπό της χρήσης γραφομηχανή. obj = {}υπονοεί objείναι ένα Object. Επισήμανση ως anyέχει κανένα νόημα. Για να επιτευχθεί η επιθυμητή συνεκτικότητα μια διασύνδεση θα μπορούσε να οριστεί ως εξής.
interface LooseObject {
[key: string]: any
}
var obj: LooseObject = {};
Ή για να γίνει συμπαγής:
var obj: {[k: string]: any} = {};
LooseObjectμπορεί να δεχθεί τα πεδία με οποιαδήποτε συμβολοσειρά ως κλειδί και anyπληκτρολογήστε ως τιμή.
obj.prop = "value";
obj.prop2 = 88;
Η πραγματική κομψότητα της λύσης αυτής είναι ότι μπορείτε να συμπεριλάβετε typesafe πεδία στο περιβάλλον.
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;