Estou me sentindo curioso *.d.ts
porque sou novato no TypeScript. E alguém me disse que esse tipo de arquivo é algo como "arquivo principal" em C ++, mas apenas para JS. Mas não consigo converter um arquivo JS puro em arquivo, a *.d.ts
menos que eu mude à força *.js
para *.ts
. Então, eu tenho três arquivos: um arquivo JS, um arquivo TS e um *.d.ts
arquivo.
Qual é a relação entre eles?
Como posso usar o
*.d.ts
arquivo? Isso significa que posso excluir o*.ts
arquivo permanentemente?Em caso afirmativo, como o
*.d.ts
arquivo pode saber qual arquivo JS está mapeando para si mesmo?
Seria muito bom se alguém pudesse me dar um exemplo.
typescript
.d.ts
iliketocode
fonte
fonte
Respostas:
O arquivo "d.ts" é usado para fornecer informações de tipo de texto datilografado sobre uma API escrita em JavaScript. A idéia é que você esteja usando algo como jQuery ou sublinhado, uma biblioteca javascript existente. Você deseja consumir aqueles do seu código datilografado.
Em vez de reescrever jquery ou sublinhado ou o que quer que seja em texto datilografado, você pode escrever o arquivo d.ts, que contém apenas as anotações de tipo. Em seguida, a partir do seu código datilografado, você obtém os benefícios datilografados da verificação estática de tipos enquanto ainda usa uma biblioteca JS pura.
fonte
d
significa Arquivos de Declaração :fonte
typings
ferramenta de linha de comando não é realmente necessária desde o TypeScript 2.0. A abordagem mais atualizada é usar wrappers de digitação por meio do repositório npm no@types
espaço para nome. Para obter mais detalhes, consulte github.com/typings/typings/blob/master/README.mdNão pude comentar e, portanto, estou adicionando isso como resposta.
Tentamos mapear tipos existentes para uma biblioteca javascript.
Para mapear um
.d.ts
arquivo para seu arquivo javascript, você precisa dar ao.d.ts
arquivo o mesmo nome que o arquivo javascript, mantê-lo na mesma pasta e apontar o código que precisa para o.d.ts
arquivo.por exemplo:
test.js
etest.d.ts
está natestdir/
pasta, então você o importa assim em um componente de reação:O
.d.ts
arquivo foi exportado como um espaço para nome como este:fonte
.d.ts
arquivo também deverá ter o mesmo nome do pacote a ser importado.Exemplo resolvido para um caso específico :
Digamos que você tenha o meu módulo que está compartilhando via npm .
Você o instala com
npm install my-module
Você o usa assim:
A lógica do módulo está toda em
index.js
:Para adicionar digitações, crie um arquivo
index.d.ts
:fonte
Como @takeshin disse, .d significa arquivo de declaração para texto datilografado (.ts).
Poucos pontos a serem esclarecidos antes de continuar a responder a esta postagem -
Se você está pensando se o texto datilografado é apenas um superconjunto sintático, que benefícios ele oferece - https://basarat.gitbooks.io/typescript/docs/why-typescript.html#the-typescript-type-system
Para responder a este post -
Como discutimos, o texto datilografado é um superconjunto de javascript e precisa ser transpilado para javascript. Portanto, se uma biblioteca ou código de terceiros for escrito em texto datilografado, ele será convertido para javascript, que pode ser usado pelo projeto javascript, mas vice-versa não é verdadeiro.
Por ex -
Se você instalar a biblioteca javascript -
e tente importá-lo no código datilografado -
você receberá um erro.
Conforme mencionado pelo @Chris, muitas bibliotecas como o sublinhado, o Jquery já estão escritos em javascript. Em vez de reescrever essas bibliotecas para projetos datilografados, era necessária uma solução alternativa.
Para fazer isso, você pode fornecer um arquivo de declaração de tipo na biblioteca javascript denominada * .d.ts, como no caso acima mylib.d.ts. O arquivo de declaração fornece apenas declarações de tipo de funções e variáveis definidas no respectivo arquivo javascript.
Agora, quando você tenta -
O mylib.d.ts é importado, o que funciona como uma interface entre o código da biblioteca javascript e o projeto datilografado.
fonte
Esta resposta supõe que você tenha algum JavaScript que não deseja converter para TypeScript, mas deseja se beneficiar da verificação de tipo com alterações mínimas no seu
.js
. Um.d.ts
arquivo é muito parecido com um arquivo de cabeçalho C ou C ++. Seu objetivo é definir uma interface. Aqui está um exemplo:mashString.d.ts
mashString.js
main.js
A relação aqui é:
mashString.d.ts
define uma interface,mashString.js
implementa a interface emain.js
usa a interface.Para que a verificação de tipo funcione, adicione
// @ts-check
seus.js
arquivos. Mas isso só verifica semain.js
a interface está correta. Para garantir também que amashString.js
implemente corretamente, adicionamos/** @type {import("./mashString")} */
antes da exportação.Você pode criar seus
.d.ts
arquivos iniciais usando-ostsc -allowJs main.js -d
e editá-los conforme necessário manualmente para melhorar a verificação e a documentação do tipo.Na maioria dos casos, a implementação e a interface têm o mesmo nome aqui
mashString
. Mas você pode ter implementações alternativas. Por exemplo, poderíamos mudar o nomemashString.js
parareverse.js
e ter uma alternativaencryptString.js
.fonte