#typescript
#typescript
Вопрос:
Я пытаюсь скомпилировать некоторый Typescript и получаю ошибку компилятора:
TypeError: myVariable is not a function
at Object.<anonymous> (/home/anon/Desktop/Typescript/main.js:37:1)
at Module._compile (internal/modules/cjs/loader.js:738:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10)
at Module.load (internal/modules/cjs/loader.js:630:32)
at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
at Function.Module._load (internal/modules/cjs/loader.js:562:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
at internal/main/run_main_module.js:21:11
Я уверен, что это потому, что myVariable действительно не является функцией, но имеет тип ‘any’. Однако этот тип данных должен быть доступен как функция, если я не ошибаюсь.
Спасибо
let myVariable: any = 10;
console.log(myVariable.name);
console.log();
myVariable();
Комментарии:
1. Вы имеете в виду, что тип данных JavaScript
Number
должен быть доступен как функция?2. Я следую этому руководству:
3. Ну,
any
на самом деле просто сообщает компилятору TypeScript, что переменная может быть любого типа, и то, что вы на самом деле присваиваете переменной, — это число. Итак, фактически, вы пытаетесь запустить что-то вроде10()
, что, конечно же, завершается неудачей. Что именно вы пытаетесь сделать, «вызывая» число?4. Спасибо за ваш ответ. Я следую этому руководству: youtube.com/watch?v=WBPrJSw7yQA примерно в 24:00 минут преподаватель демонстрирует вывод переменной myVariable на консоль. Он говорит, что, поскольку переменная имеет тип ‘any’, переменная ‘myVariable’ должна быть доступна следующими методами; console.log(myVariable.name ); myVariable(); myVariable.toUpperCase();
5. А, понятно. Когда диктор говорит, что TypeScript не выдает никаких ошибок (в 23:30), он не говорит об ошибках компиляции (из-за запуска
tsc
программы). Он ссылается на линтер TypeScript, который проверяет ваш код на наличие проблем в вашем текстовом редакторе перед компиляцией. Вы заметите, что подmyVariable()
строкой нет красных «закорючек». Однако, когда он переключает тип наunknown
, появляются закорючки. Эти закорючки и есть ошибки, о которых он говорит — код никогда не предназначен для запуска.
Ответ №1:
Когда диктор говорит, что TypeScript не выдает никаких ошибок (в 23:30), он не говорит об ошибках компиляции (из-за запуска программы tsc). Он ссылается на линтер TypeScript, который проверяет ваш код на наличие проблем в вашем текстовом редакторе перед компиляцией. Вы заметите, что под строкой myVariable() нет красных «закорючек». Однако, когда он переключает тип на неизвестный, появляются закорючки. Эти закорючки и есть ошибки, о которых он говорит — код никогда не предназначен для запуска.