update - typescript stable




Sobre “*.d.ts” no TypeScript (3)

Como @takeshin disse .d significa arquivo de declaração para typescript (.ts).

Poucos pontos a serem esclarecidos antes de prosseguir para responder a este post -

  1. Datilografado é superconjunto sintático de javascript.
  2. Datilografado não funciona sozinho, ele precisa ser transpilado em javascript ( datilografado para conversão em javascript )
  3. "Definição de tipo" e "Verificação de tipo" são funcionalidades complementares importantes que o typescript fornece sobre o javascript. ( verifique a diferença entre o tipo script e javascript )

Se você está pensando que se o typescript é apenas um superconjunto sintático, quais os benefícios que ele oferece - https://basarat.gitbooks.io/typescript/docs/why-typescript.html#the-typescript-type-system

Para responder este post -

Como discutimos, o typescript é um superconjunto de javascript e precisa ser transpilado para o javascript. Portanto, se um código de biblioteca ou de terceiros é escrito em datilografado, ele eventualmente é convertido em javascript, que pode ser usado pelo projeto javascript, mas vice-versa não é verdadeiro.

Por ex -

Se você instalar a biblioteca javascript -

npm install --save mylib

e tente importá-lo no código datilografado -

import * from "mylib";

você vai ter erro.

"Não é possível encontrar o módulo 'mylib'."

Como mencionado pelo @Chris, muitas bibliotecas como sublinhado, Jquery já estão escritas em javascript. Em vez de reescrever essas bibliotecas para projetos typescript, uma solução alternativa era necessária.

Para fazer isso, você pode fornecer o arquivo de declaração de tipo na biblioteca javascript chamado * .d.ts, como no caso acima de 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 -

import * from "mylib";

mylib.d.ts é importado e atua como uma interface entre o código da biblioteca javascript e o projeto typescript.

https://code.i-harness.com

Estou me sentindo curioso sobre *.d.ts por causa de um novato do TypeScript. E alguém me disse que esse tipo de arquivo é algo como "head file" em C ++, mas apenas para JS. Mas não consigo converter um arquivo JS puro em arquivo *.d.ts menos que eu mude forçadamente o *.js para *.ts . Então eu tenho três arquivos: um arquivo JS, um arquivo TS e um arquivo *.d.ts .

  1. Qual a relação entre eles?

  2. Como posso usar o arquivo *.d.ts ? Isso significa que posso excluir o arquivo *.ts permanentemente?

  3. Se sim, como o arquivo *.d.ts pode saber qual arquivo JS está mapeando para si mesmo?

Muito Obrigado! Seria muito bom se alguém me desse um exemplo.


Eu não pude comentar e, assim, adicionar isso como uma resposta. Tivemos alguma dor tentando mapear tipos existentes para uma biblioteca javascript.

Para mapear um arquivo d.ts para o seu arquivo javascript, você precisa dar ao arquivo d.ts o mesmo nome do arquivo javascript, mantê-los na mesma pasta e apontar o código que precisa para o arquivo d.ts.

Por exemplo: test.js e test.d.ts estão no testdir, então você o importa assim em um componente de reação:

import * as Test from "./testdir/test";

O arquivo d.ts foi exportado como um namespace como este:

export as namespace Test;

export interface TestInterface1{}
export class TestClass1{}

d significa arquivos de declaração :

Quando um script TypeScript é compilado, existe uma opção para gerar um arquivo de declaração (com a extensão .d.ts) que funciona como uma interface para os componentes no JavaScript compilado. No processo, o compilador remove todos os corpos de função e método e preserva apenas as assinaturas dos tipos que são exportados. O arquivo de declaração resultante pode ser usado para descrever os tipos de TypeScript virtuais exportados de uma biblioteca ou módulo JavaScript quando um desenvolvedor de terceiros o consome do TypeScript.

O conceito de arquivos de declaração é análogo ao conceito de arquivo de cabeçalho encontrado em C / C ++.

declare module arithmetics {
    add(left: number, right: number): number;
    subtract(left: number, right: number): number;
    multiply(left: number, right: number): number;
    divide(left: number, right: number): number;
}

Os arquivos de declaração de tipo podem ser escritos à mão para bibliotecas JavaScript existentes, como foi feito para jQuery e Node.js.

Grandes coleções de arquivos de declaração para bibliotecas JavaScript populares são hospedadas no GitHub em DefinitelyTyped e no Registro de Tipografias . Um utilitário de linha de comando chamado typings é fornecido para ajudar a procurar e instalar arquivos de declaração dos repositórios.





.d.ts