При использовании оператора [], который должен быть типом? например а [10] ??
В JavaScript (и, следовательно, в машинопись) объекты могут иметь свойства с номерами, как их названия, например:
{
1: 'Apples',
2: 'Oranges'
}
Что такое же, как:
{
'1': 'Apples',
'2': 'Oranges'
}
г. Название свойство также называется ключ.
В моем впечатлении тип индекса похож на массив (объект в javascript).
Просто потому, что объект имеет цифровые клавиши, это не автоматически массив:
var arr = ['Apples', 'Oranges'];
console.log(arr.constructor); // logs 'function Array() { ... }'
console.log(arr[1]); // logs 'Apples'
var obj = { 1: 'Apples', 2: 'Oranges' };
console.log(obj.constructor); // logs 'function Object() { ... }'
console.log(obj[1]); // logs 'Apples'
console.log(obj['1']); // logs 'Apples'
Сказав, что интерфейс NotOkay
описывает объекты, которым разрешено иметь как числовой и не - цифровые клавиши. Доступ к ним не описывается или не ограничивается интерфейсами каким-либо образом.
Что меня смущает это определение типа индекса
Угу. Это именно то, что вы указали в справочнике TypeScript с индексом , «индексирование с помощью« строки »иногда дает вам собаку. Из-за слабого синтаксиса для аксессуаров, о котором я только что описал, было бы очень запутанно иметь объект, числовые ключи которого позволяют вам получить доступ к одному типу, в то время как нечисловые ключи позволяют вам получить доступ к другому.
Для наглядности: Если бы вы были модифицируем пример только немного, то не было бы никакой ошибки в интерфейсе больше:
class Animal {
name: string;
}
class Dog extends Animal {
//breed: string; <-- Dog and Animal now have the same interface
}
// No error because Dog and Animal have the same interface:
interface Okay {
[a: number]: Animal;
[x: string]: Dog;
}
(TypeScript playground)
Этот пример прекрасно, потому что машинопись использует систему с структурного типа:
совместимость типа в машинописном основана на структурных подтипах. Структурная типизация - это способ связывания типов, основанных исключительно на их членах . Это контрастирует с номинальной типизацией. more...
Надеюсь, это поможет вам.
На основе системы типа структуры животным и собаке разрешено назначать друг другу. Поэтому ваш пример игровой площадки не имеет ошибки. Но зачем определять два набора индекса и возвращаемого значения, в которых возвращаемое значение может считаться одним и тем же типом? –
Возвращаемое значение - это значение, возвращаемое функцией - я не вижу никаких возвращаемых утверждений функций в вашем вопросе: -/Не могли бы вы пояснить, что вы имеете в виду? –
@ NicolasS.Xu Разве я не ответил на ваш вопрос? Если нет, сообщите мне, и я буду рад помочь. Если это так, согласиться было бы приятно ;-) –