учебник - Переменные строки в TypeScript-«Тип... не присваивается типу...»




тайпскрипт (3)

Недавно я обновил версию TypeScript с 2.3.4 до 2.4.0, надеясь использовать перечисления строк . К моему ужасу, однако, меня приветствовали сообщения об ошибках:

Код степени серьезности Описание Ошибка подавления строки строки файла проекта TS2322 Тип «E» не присваивается типу «StepType». ClientApp (проект tsconfig) Z: \ SMART \ Smart \ Smart \ ClientApp \ app \ models \ process.model.ts 17 Активная ошибка TS2322 Тип «S» не присваивается типу «StepType». ClientApp (проект tsconfig) Z: \ SMART \ Smart \ Smart \ ClientApp \ app \ models \ process.model.ts 14 Активная ошибка TS2322 Тип '' A '' не может быть присвоен типу «StepType». ClientApp (проект tsconfig) Z: \ SMART \ Smart \ Smart \ ClientApp \ app \ models \ process.model.ts 15 Активная ошибка TS2322 Тип «D» не присваивается типу «StepType». ClientApp (проект tsconfig) Z: \ SMART \ Smart \ Smart \ ClientApp \ app \ models \ process.model.ts 16 Active

Сообщения об ошибках относятся к следующему фрагменту кода (с номерами строк):

13. export enum StepType {
14.    Start = 'S',
15.    Activity = 'A',
16.    Decision = 'D',
17.    End = 'E'
18. }

Я использую Visual Studio 2017, который утверждает, что TypeScript 2.4.0 установлен:

Я искал проблемы с TypeScript , но не повезло. Кто-нибудь знает, как это исправить?


Вдохновленный ответом Дункана , я нашел первопричину. Хотя приложение использовало TypeScript 2.4, IntelliSense VS все еще оставался в 2.3.

Способом решения проблемы было загрузить и установить SDK TypeScript 2.4, а затем выбрать из опций более новую версию:


Это ошибка, которую вы получаете при компиляции с версией машинописного текста старше 2.4. Все, что я могу предложить, это то, что ваша копия Visual Studio каким-то образом собирает свою старую версию машинописного текста, а не использует новую, установленную в вашем проекте. См. Wiki https://github.com/Microsoft/TypeScript/wiki/Updating-TypeScript-in-Visual-Studio-2017 для получения инструкций по обновлению машинописного текста.

PS C:\temp> cat t.ts
enum StepType {
    Start = 'S',
    Activity = 'A',
    Decision = 'D',
    End = 'E'
}
PS C:\temp> node somepath\node_modules\typescript\bin\tsc --version
Version 2.2.2
PS C:\temp> node somepath\node_modules\typescript\bin\tsc t.ts
t.ts(2,13): error TS2322: Type '"S"' is not assignable to type 'StepType'.
t.ts(3,16): error TS2322: Type '"A"' is not assignable to type 'StepType'.
t.ts(4,16): error TS2322: Type '"D"' is not assignable to type 'StepType'.
t.ts(5,11): error TS2322: Type '"E"' is not assignable to type 'StepType'.
PS C:\temp> tsc --version
Version 2.4.1
PS C:\temp> tsc t.ts
PS C:\temp>

Это происходит из-за машинописной версии.

Откройте командную строку или терминал. затем выполните эти команды.

Проверить версию TypeScript

tsc -v

должно быть выше 2,4

если не.

установить последнюю версию машинописного текста по всему миру

npm install typescript -g

Откройте файл package.json проекта и измените его версию с новой версией

"typescript": "~2.6.1"

Затем удалите папку node_modules

Очистить кеш, используя

npm cache clean

Наконец, запустите

npm install

* Обратите внимание: вы можете обновить npm, используя обновление npm, но не уверены, что версия машинописного текста будет обновлена ​​*







typescript2.4