typeof const typescript становится значением - PullRequest
1 голос
/ 06 мая 2020

Не могу понять, почему, если я сделаю это:

export const SET_EXPENSE = 'SET_EXPENSE';
export interface SetExpenseAction {
      type: typeof SET_EXPENSE;
      expenses: Expense[];
}

при создании интерфейса мне нужно указать тип только как SET_EXPENSE. typeof (SET_EXPENSE) является строкой, так почему же он становится здесь значениями и ограничивает тип только этой строкой?

1 Ответ

0 голосов
/ 06 мая 2020

Предполагаемый тип SET_EXPENSE - это строковый литерал 'SET_EXPENSE'. TypeScript даже не позволит вам сравнить его с другой строкой;

if (SET_EXPENSE === "other string") {...}

Получит эту ошибку:

This condition will always return 'false' since the types '"SET_EXPENSE"' and '"other string"' have no overlap.

Теперь, если вы установите тип самостоятельно, на string . Он будет работать так, как вы ожидаете.

export const SET_EXPENSE: string = 'SET_EXPENSE'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...