Agora, o TypeScript foi lançado, é uma notícia emocionante para mim, mas como posso converter todos os arquivos JavaScript existentes em TypeScript?
typescript
javascript
Gisway
fonte
fonte
Respostas:
Receio que isso seja muito problemático. TypeScript é um superconjunto de JavaScript . Isso implica que todo código JavaScript válido também é código TypeScript válido. O que está errado. O código a seguir está correto no JavaScript, mas cria um erro no TypeScript:
Você pode obter o comportamento dinâmico do JavaScript declarando os dados como "ambiente"
Agora isso também funcionará no TypeScript. No entanto, você pode alterar a extensão de um arquivo .js para .ts e passar esse arquivo para o compilador TypeScript. Isso realmente me confundiu e fiz a pergunta no canal de IRC do TypeScript no freenode. Aconteceu que o compilador Typescript verifica sua entrada quanto a JavaScript válido e simplesmente não faz nada caso encontre alguma coisa. Intuitivamente, isso parece bom. Você deve conseguir "converter" todo o seu JavaScript em Typescript apenas atualizando as extensões de arquivo e pronto. Infelizmente, isso não funciona conforme o esperado. Vamos supor que você tenha esse código:
Edit: Eu apenas tentei compilar isso e não funciona. Sinto muito, parece que me enganei: o compilador TypeScript nem aceita JavaScript puro. Vou tentar descobrir o que deu errado.
Você alterou a extensão do arquivo para .ts e usa a função func no seu outro código. No começo, tudo parece bem, mas depois um erro feio aparece. Você decide que alguma verificação estática de tipo provavelmente o ajudaria e alterou o código para:
Mas agora isso não é mais um código JavaScript válido e fará com que o compilador gere muitas mensagens de erro. Afinal, os dados não têm nenhum membro "z". ... Esse comportamento pode ser evitado se o tipo padrão sempre for "qualquer", mas a inferência de tipo for totalmente inútil.
Então, como você resolve esse problema? A resposta é: arquivos de declaração. Você pode usar o código JavaScript "como está" no projeto e ainda obter a verificação de tipo estático com a ajuda de alguns arquivos .d.ts. Eles informam ao compilador quais variáveis, métodos e "classes" são declaradas em um arquivo JavaScript, incluindo seus tipos. Portanto, eles permitem a verificação do tipo em tempo de compilação e um fantástico senso de senso. Um arquivo .d.ts para o meu exemplo seria
Salve isso como "myjsfile.d.ts" e importe-o para texto datilografado com
lembre-se de incluir o script JavaScript no seu arquivo html acima do texto datilografado compilado. Aqui está um link interessante . Você pode estar interessado na seção "Transformando JavaScript em TypeScript".
fonte
noEmitOnError
estiver desativado, ele ainda pode operar e emitir sua transpilação. Portanto, embora mostre erros (o que é perturbador), você pode realmente ignorá-los e usar a transpilação TypeScript apesar dela (permitindo, por exemplo, a transição gradual de JS para TS). Além disso, pelo menos alguns dos erros podem ser desativados por meio de switches comonoImplicitAny
(talvez todos, embora o IDK).Atualização: a ferramenta é descrita em detalhes nesta publicação
O ReSharper a partir da versão 9 ( compilações EAP disponíveis ) possui funcionalidade para converter automaticamente o código JavaScript em TypeScript. Você pode começar com a renomeação do arquivo .js em .ts e ver sugestões de R # como esta:
Não tentei em exemplos do mundo real. Mas é capaz de converter um grande número de padrões JavaScript.
fonte
Do terminal (mac):
Renomeia todos os arquivos .js para .ts
Isso é um tanto irônico - mas, como Benjamin aponta acima, os arquivos JavaScript são TypeScript válidos . Se você deseja adicionar tipos, classes, interfaces, etc. ao seu JavaScript - você mesmo precisará criar e alterar seu código usando esses conceitos - há pouca / nenhuma conversão automática para isso.
Com o GNU findutils (a maioria dos * nixes) + Bash, basta:
fonte
var a = 5; a = "";