Включить строгий ввод при компиляции typescript в javascript

#javascript #error-handling #typescript

#javascript #обработка ошибок #typescript

Вопрос:

Я пишу код TypeScript, который затем компилируется в Javascript, и несколько вызовов динамических функций выполняются непосредственно из браузера в Javascript, а не в typescript. Когда вы пишете функцию TypeScript с аннотациями типов, она выдает ошибку, если что-то имеет неправильный тип. Например, простая функция

 function add(a: number, b: number): number{
    return a   b;
}
  

компилируется в типизированный

 function add(a, b) {
    return a   b;
}
  

Есть ли какая-либо возможность скомпилировать его и добавить проверку типов в точке входа функции?

Ответ №1:

Да, есть способ проверить тип во время выполнения, но вам придется использовать TS *, а не TypeScript. TypeScript стирает всю информацию о типе во время компиляции, оставляя вам чистый код JavaScript.

Постепенный ввод текста, надежно внедренный в JavaScript, представляет TS* — постепенно типобезопасный язык в JavaScript.

Идея в том, что компиляция внесет серьезные преобразования в ваш код, чего они не стремились делать в TypeScript.

Если это не то, что вам действительно необходимо (возможно, по соображениям безопасности, описанным в техническом документе), возможно, вам лучше использовать более распространенные проверки во время разработки и компиляции, предлагаемые TypeScript.

Ответ №2:

Typescript не поддерживает отправляющий код проверки типов, любая необходимая проверка типов должна быть добавлена вручную с использованием instanceof, typeof и т.д. Так же, как вы бы делали для обычного JS.

Поговаривали о добавлении его в качестве необязательного флага, но начиная с версии 1.0.3 флага нет.

Ответ №3:

TypeScript действительно обеспечивает только проверку типов во время компиляции, но всегда компилируется в JavaScript без ввода.

Если вас беспокоит проверка типов во время выполнения, вы можете добавить свои собственные вызовы для typeof или instanceof для выполнения проверок. http://javascript.info/tutorial/type-detection