Pull to refresh

Comments 18

а как выполнить первый пример?
создал test.js запускаю выдает ошибки.
Как это запустить без nodejs?
просто в браузере открыл js файл всё работает.
для TypeScript так нельзя?

Просто js файл в браузере тоже не всегда работает, особенно если браузер старый.

Данные примеры рассчитаны на работу именно в среде node.js
Теоретически typescript может работать и в браузере, но лучше в node.js
TypeScript не может работать ни в браузере, ни в node.js. TypeScript компилируется в JavaScript, который работает и в браузере и в node.js. Без всяких «теоретически».
Движок TS написан на javascript.
Вы можете импортировать 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 но это не единственная опция.
Технически ваш пример не более чем перенос транспиляции TS в JS с уровня разработки на уровень runtime и вызывает лишь спортивный интерес, так как пользы в этом действии я придумать не могу) Сам TypeScript, возвращаясь к обсуждению выше, все равно не умеет выполняться ни в браузере, ни в node.js
С таким же успехом можно сказать, что любой псевдокод выполняется в браузере, если подключить в runtime какой-то транспайлер в JS
Именно это и спрашивал sojey80135: «можно ли написать TS и открыть в браузере и увидеть результат?» — ответ: «да, можно» и я указал как именно. То что вы не видите применения или хотите обсудить значение слова «выполняется» — не относится к вопросу.
Хороший слог. Автор молодчина. Ждем следующие статьи.
Автору… Парсер может принести сюрпризы. Обычные кавычки (") поменялись на ёлочки («)
Для некоторых значений, таких как примитивы 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 невозможно.

Стесняюсь спросить, сколько карманов для книги то пришивать?

В чем смысл этой статьи? Не могу понять. Для кого это пишется? Для школьников, которые изучают тайпскрипт? Весь хабр завален такими базовыми штучками, которые ничем не отличаются от подобных статей, засирающих поисковую выдачу своей однотипностью. Это тут местный способ срубить кармочку, или как?
Sign up to leave a comment.