Я пытаюсь реализовать шаблон типа тега объединения для создателей моих действий в приложении с избыточностью. TS компилируется без проблем, но My IDE Visual Studio Code 1.26.1
выдает ошибку.
[ts] Type 'boolean | {open: boolean; } 'нельзя назначить типу' логический '.
Тип '{open: boolean; } 'нельзя присвоить типу' boolean '.
Версия машинописного текста, указанная в правом нижнем углу, - Typescript 3.0
- это версия, которую я использую в своем проекте. Если я правильно понимаю машинопись, она должна различать, основываясь на моём значении типа, и правильно выводить, каким будет тип моей полезной нагрузки. Опять же, похоже, что это работает с точки зрения ts, но раздражает, что vs-код доставляет мне неприятности.
редуктор
import { Action } from '../actions';
interface State {
open: boolean;
};
const defaultState : State = {
open: false,
};
export default (state = defaultState, { type, payload } : Action) : State => {
switch(type) {
case 'PASSWORD/OPEN':
return { ...state, open: payload } // ERROR here on open property
}
}
действия / index.ts
import { PasswordAction, openPassword, closePassword } from './password';
export type Action = PasswordAction;
export default {
openPassword,
closePassword,
};
Действия / password.ts
interface OpenAction {
type: 'PASSWORD/OPEN';
payload: boolean;
}
interface CloseAction {
type: 'PASSWORD/CLOSE';
payload: { open: boolean; };
}
export type PasswordAction = OpenAction | CloseAction;
export const openPassword = () : OpenAction => ({
type: 'PASSWORD/OPEN',
payload: true,
});
export const closePassword = () : CloseAction => ({
type: 'PASSWORD/CLOSE',
payload: {open: false},
});
Ответственность
Возможно, это не связано непосредственно с программированием и, следовательно, потенциально не по теме. Сначала я собирался опубликовать вопрос на их странице GitHub, но в контрольном списке проблем сказано задавать вопросы здесь. Поскольку я не уверен на 100%, что это ошибка, я решил сначала проверить здесь.