Digitações TypeScript nos pacotes org npm @types org

135

Percebi que há uma organização npm @types , que contém pacotes de digitação, mas não consegue encontrar nenhuma documentação. Como eles devem ser usados?

É para ser usado com a ferramenta de digitação ? Se sim, como instalá-los? Por exemplo, há um @types/openlayerspacote, mas typings search npm:openlayersnão retorna nada.

Ele deve ser usado separadamente da ferramenta de digitação? Por exemplo, instalado diretamente com npm?

Ronald Zarīts
fonte
11
Obrigado por esta pergunta.
Léon Pelletier

Respostas:

109

A partir do texto dactilografado 2,0, tipificações não é mais necessário. A organização npm é uma entidade para configurar uma equipe de desenvolvedores. Acredito que a Microsoft configurou a organização @types no npm e adicionou a equipe de desenvolvedores do TypeScript à organização. Os pacotes na organização @types são publicados automaticamente no DefinitelyTyped usando a ferramenta types-publisher, conforme os documentos .

Além disso, existe outra maneira de adicionar typesaos seus pacotes:

No seu package.json

Se o seu pacote tiver um .jsarquivo principal , você também precisará indicar o arquivo de declaração principal no seu package.jsonarquivo. Defina a typespropriedade para apontar para seu arquivo de declaração em pacote configurável . Por exemplo:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

Observe que o "typings"campo é sinônimo "types"e também pode ser usado.

Observe também que se o seu arquivo de declaração principal tiver o nome index.d.tse residir na raiz do pacote (ao lado de index.js), você não precisará marcar a "types"propriedade, embora seja recomendável fazê-lo.

Em relação aos tipos de pesquisa

Na maioria das vezes, os pacotes de declaração de tipo sempre devem ter o mesmo nome que o nome do pacote no npm, mas prefixados com @ types /, mas, se necessário, você pode conferir https://aka.ms/types para encontrar o pacote para sua biblioteca favorita.

From - http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

Mas quando consegui npm search @types/openlayers, não obtive nenhum resultado. Mas fazer a pesquisa na interface da web me devolveu os resultados. Então eu acho npm searchque não pesquisa entre organizações.

randominstanceOfLivingThing
fonte
Ótima resposta! Edições menores seriam boas, mas isso explica melhor o estado atual.
Ronald Zarīts 12/10
Desde que você especificar um único arquivo em seu package.jsonsob a typespropriedade, eu notei que você está falando arquivo de declaração empacotado . Qual seria a maneira mais fácil de conseguir isso em um sistema de compilação automatizado como o gulp?
Nicky
Preciso adicionar o "main"campo se o principal for chamado index.js?
Knu
1
Muito obrigado por este "Note que o "typings"campo é sinônimo de "types", e pode ser usado como bem"
Serhii Popov
42

O anúncio no blog do TypeScript responde a isso: O futuro dos arquivos de declaração

Resumo:

A @typesorganização npm é para obter definições de tipo com npm. O uso dessas definições de tipo é um recurso do TypeScript 2.0.

Isso substituirá os projetos / ferramentas atuais, como digitações e tsd , embora eles continuem sendo suportados por algum tempo.

Ronald Zarīts
fonte
1
Ei Ron, estou tentando obter essas configurações, mas não parece que o VSCode esteja percebendo que eu as tenho instaladas. Depois de usar algo como core-jsw / npm i @types/core-js --save, posso ver que está na pasta, mas o projeto ainda gera erros para algumas coisas. Há algo mais que eu deveria estar fazendo? Preciso deixar o tsconfig ciente de @types ou algo assim? Como Sean disse, ainda não há documentação para os tipos :(
Mark Pieszak - Trilon.io 13/07/16
@ MarkPieszak, você precisa ter certeza de que o VSCode está usando o TS2.0. Veja como instalar typescript localmente e usá-lo em VSCode aqui: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino
Yup que era @ nino.porcino obrigado :) tsdkprecisava ser apontado para um 2.0beta instalação do TS
Mark Pieszak - Trilon.io
pelo menos para alguns projetos de equipe Estamos atualizando (e também em outros projetos GH vimos) deve-se também atualizar tsconfig.jsoncom uma "types"propriedade de matriz enumera os nomes dos módulos, por exemplo"types": ["core-js"]
superjos
7

Esse será um recurso lançado no Typescript 2.0. Isso fornece suporte de tipo para módulos / bibliotecas UMD e suas respectivas definições.

Consulte ( Suporte interno para definições de módulo UMD ) para entender melhor os problemas atualmente com as tipologias de ambiente.

Sean Larkin
fonte
Obrigado! Isso é útil, mas não vejo o problema do GitHub discutindo a organização @types npm. A organização @types é especificamente para o /// <referencecenário UMD ? O compilador TypeScript procurará automaticamente os tipos abaixo node_modules/@types(assim como os módulos em node_modulesquando 'moduleResolution': 'node')? O que isso significa para typings- também lida com dependências do ambiente. Está relacionado de alguma forma?
Ronald Zarīts