Có thể biểu thị obj
là any
, nhưng điều đó đánh bại toàn bộ mục đích sử dụng bản thảo. obj = {}
ngụ ý obj
là một Object
. Đánh dấu nó là any
không có ý nghĩa. Để thực hiện tính nhất quán mong muốn, một giao diện có thể được xác định như sau.
interface LooseObject {
[key: string]: any
}
var obj: LooseObject = {};
HOẶC để làm cho nó nhỏ gọn:
var obj: {[k: string]: any} = {};
LooseObject
có thể chấp nhận các trường với bất kỳ chuỗi nào là khóa và any
nhập dưới dạng giá trị.
obj.prop = "value";
obj.prop2 = 88;
Sự thanh lịch thực sự của giải pháp này là bạn có thể bao gồm các trường loại an toàn trong giao diện.
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;
Trong khi điều này trả lời câu hỏi Ban đầu, câu trả lời ở đây của @GreeneCreations có thể đưa ra một quan điểm khác về cách tiếp cận vấn đề.