То, что вы действительно хотите, может быть просто перечислением
Если вы ищете что-то, что ведет себя как перечисление (потому что я вижу, что вы определяете объект и присоединяете последовательный идентификатор 0, 1, 2 и содержат поле имени, которое вы не хотите опечатывать (например, name vs naaame) вам лучше определить перечисление, потому что последовательный идентификатор обрабатывается автоматически и обеспечивает проверку типа из коробки.
enum TestStatus {
Available, // 0
Ready, // 1
Started, // 2
}
class Test {
status: TestStatus
}
var test = new Test();
test.status = TestStatus.Available; // type and spelling is checked for you,
// and the sequence ID is automatic
Приведенные выше значения будут автоматически сопоставлены, например, «0» для «Доступен», и вы можете получить к ним доступ, используя TestStatus.Available. И Typescript будет принудительно применять тип, когда вы его передаете.
Если вы настаиваете на определении нового типа как массива вашего пользовательского типа
Вы хотели получить массив объектов (не точно объект с ключами «0», «1» и «2»), поэтому давайте сначала определим тип объекта, а затем тип содержащего массива.
class TestStatus {
id: number
name: string
constructor(id, name){
this.id = id;
this.name = name;
}
}
type Statuses = Array<TestStatus>;
var statuses: Statuses = [
new TestStatus(0, "Available"),
new TestStatus(1, "Ready"),
new TestStatus(2, "Started")
]
let someArray: Array<{ id: number, name: string }> = []