#javascript #typescript
#javascript #typescript
Вопрос:
interface Address {
a: string
}
interface End {
state: {
addrList: null | (Address[]);
};
}
class End {
state = {
addrList: [{
a: '1'
}],
};
}
Error: Subsequent property declarations must have the same type.
Property 'state' must be of type '{ addrList: Address[] | null; }', but here has type '{ addrList: { a: string; }[]; }'.
Затем я получил это.
Итак, я что-то упускаю?
Онлайн-демонстрация
Комментарии:
1. Ваш пример отлично подходит для меня, на какой версии TypeScript вы работаете?
2. @Zer0 возможно, вы не используете строгий режим, попробуйте запустить
tsc --init
3. Чего именно вы пытаетесь достичь с помощью этого кода? Вы создаете класс и интерфейс с одинаковыми именами, поэтому typescript пытается наложить их, но не может из-за несоответствия типов.
4. Вы пытаетесь сделать это ? Вы используете слияние объявлений в своем коде, но, вероятно, не должны этого делать.
Ответ №1:
Вы забыли реализовать интерфейс, поэтому ваш конечный класс не знает, что должно быть назначено addrList. Также в интерфейсе должен быть I перед именем (это просто шаблон), чтобы вы избежали столкновения имен.
Проверьте это
interface IAddress {
a: string
}
interface IEnd {
state: {
addrList: (IAddress[] | null);
};
}
class End implements IEnd {
state = {
addrList: [{
a: '1'
}],
};
}