Usando TypeScript em arquivos cshtml
-
12-12-2019 - |
Pergunta
Gostaria de saber se existe alguma maneira de usar TypeScript em arquivos cshtml do Razor?
Por exemplo, algo assim
<script language="text/typescript">
/// typescript goes here
</script>
Solução
TypeScript não é um tempo de execução;é compilado em JavaScript.Como resultado, você precisará escrever seu TypeScript, compilá-lo e incluí-lo nas tags de script JavaScript ou como um arquivo externo.
Outras dicas
É possível.Eu desenvolvi Compilação TypeScript - um compilador automático de TypeScript para JavaScript em tempo real.Tente!
Deixe-me acrescentar à resposta de Robs que é tecnicamente possível incorporar o compilador TypeScript em um download de página e fazer com que o código de compilação do navegador seja escrito em <script language="text/typescript">
Tag.
O desempenho, entretanto, seria abaixo do ideal e a pré-compilação no servidor seria preferida.Tecnicamente, também não há nada que impeça um pré-processador de fazer isso (o T4 poderia fazer isso).
Acabei de verificar com minha extensão VS favorita: Fundamentos da Web
Eles já incluíram a compilação do arquivo .ts ao salvar (recomenda-se usar também o plugin original para Intellisense).
Obviamente, isso só funciona para arquivos .ts.Na minha opinião, quando você atingir a complexidade de escolher TypeScript em vez de JavaScript, você deverá usá-lo em um arquivo separado, de qualquer maneira.
Você pode compilar manualmente os arquivos TypeScript usando tsc.exe e, em seguida, adicionar o Javascript resultante ao seu projeto ou usar uma ferramenta, como Fundamentos da Web que compila ao salvar.
Como o compilador pode ser compilado para Javascript, você também pode permitir que o navegador do usuário faça a compilação dinamicamente (ao custo do desempenho e do tamanho do arquivo, o compilador é bastante grande).Um exemplo desta abordagem é a solução da niutech.
Se você estiver usando Bundling e Minification, acabei de lançar uma implementação de IBundleTransform que compila TypeScript para Javascript.Está ligado GitHub e NuGet (Pacote de Instalação TypeScriptBundleTransform).Se você ainda não usa Bundling and Minification, vale a pena dar uma olhada!