Комментарии 18
создал test.js запускаю выдает ошибки.
Как это запустить без nodejs?
А первый пример — это какой?
И как вы собрались js-файл без nodejs запускать?
для TypeScript так нельзя?
Можно - если скомпилировать в JS и запустить.
Или использовать плейграунд - https://www.typescriptlang.org/play
Или подключить либу и прямо в браузере использовать - https://github.com/basarat/typescript-script
Просто js файл в браузере тоже не всегда работает, особенно если браузер старый.
Теоретически typescript может работать и в браузере, но лучше в node.js
Вы можете импортировать TS у себя в проекте и транспилировать код на языке TypeScript как говорится «на лету».
Например вот так:
<html>
<script src="https://unpkg.com/typescript@latest/lib/typescriptServices.js"></script>
<body>
<div id="main" />
<script>
const tsCode = `
let simpleText: string = "TypeScript can be transpiled in browser";
function testTS(message: string) {
const main = document.getElementById('main');
main.innerText = message;
}
testTS(simpleText);
`;
const jsCode = window.ts.transpile(tsCode);
eval(jsCode);
</script>
</body>
</html>
Вот Fiddle jsfiddle.net/k78t436y
Действительно быстрее и лучше на сервере, например на NodeJS но это не единственная опция.
С таким же успехом можно сказать, что любой псевдокод выполняется в браузере, если подключить в runtime какой-то транспайлер в JS
Попробуйте вот здесь https://www.typescriptlang.org/play
Для некоторых значений, таких как примитивы string и number, мы можем определить их тип во время выполнения кода (runtime) с помощью оператора typeof. Но для других значений, таких как функции, соответствующий механизм для определения типов во время выполнения отсутствует.
Бред.
Ещё как присутствуют.
Там ниже приводится функция со следующим типом:
<T>(x: { flip: () => T }) => T
Ну и как такой тип вы в рантайме проверите?
Или хотя бы вот такой, попроще:
(x: { flip: Function }) => any
Что вы можете сделать с функцией?
typeof fn === 'function'
fn.length
— кол-во заявленных аргументовfn.toString()
— попытаться натравить на неё парсер (не очень поможет если были какой-нибудь.bind
, т.к. будет нечто вроде() => { [native] }
)fn1 === fn2
Вот по сути и всё. В TypeScript тип это нечто гораздо большее чем вышеописанное. И разумеется определить это в runtime невозможно.
Стесняюсь спросить, сколько карманов для книги то пришивать?
Карманная книга по TypeScript. Часть 1. Основы