Когда вы знаете, какие типы конкретного объекта, TypeScript позволяет вам использовать интерфейсы, которые вы определили с помощью ISignStore
. Следуя той же схеме для UserInformation
, тип будет:
interface IUserInformation {
email: string;
password: string;
firstName: string;
lastName: string;
}
С другой стороны, используемый в настоящее время синтаксис называется Индексная подпись .
interface IObject {
[k: number]: string
}
Это в основном говорит о том, что у вас есть объект, но вы не знаете, какие у него будут ключи; Но вы уверены, что ключом будет число, а значением будет строка. Переменная k
здесь просто заполнитель, вы можете использовать что угодно в этом месте. Таким образом, благодаря этому нет смысла использовать второй ключ для k2: number
. Потому что k: number
уже рассмотрел этот случай.
Это ошибка, которую вы получаете, определив email
, password
и firstName
в качестве ключей в сигнатуре индекса. Они просто дубликаты для ключа string
.