O que a opção “lib” do tsconfig faz?


129

Eu tenho um projeto existente que tem essa linha no tsconfig.json:

lib:["2016", "DOM"]

Qual é o propósito disso?

A única informação que encontrei é esta:

Especifique o arquivo da biblioteca a ser incluído na compilação. Requer o TypeScript versão 2.0 ou posterior.

O que isso significa?


Respostas:


75

Esse é um novo recurso de texto datilografado 2 e, portanto, ainda não possui documentação, mas você pode ler sobre isso no O que há de novo no Typescript 2.0 :

com --lib, você pode especificar uma lista de grupos de declaração de API internos que você pode optar por incluir em seu projeto. Por exemplo, se você espera que seu tempo de execução tenha suporte para Map, Set e Promise (por exemplo, a maioria dos navegadores sempre atuais), inclua --lib es2015.collection, es2015.promise. Da mesma forma, você pode excluir declarações que não deseja incluir no seu projeto, por exemplo, DOM se estiver trabalhando em um projeto de nó usando --lib es5, es6.

Há também uma lista dos API groupsque são suportados e um exemplo muito curto nesse link.


25
Eu quis dizer que, quando eu especificar "lib": ["es5"], significa simplesmente que eu posso usar es5tipos para tsreclamar do compilador, ou algum tipo de preenchimento de poli será fornecido tsc?
precisa saber é o seguinte

9
Os diferentes libs pode ser encontrada aqui: github.com/Microsoft/TypeScript/tree/master/lib Eles são arquivos de definição de quais os usos do compilador
Nitzan Tomer

5
Entendo, obrigado, então isso basicamente significa que, se eu especificar "lib": ["es5"]e não especificar "dom", tscreclamaremos sobre o uso de métodos específicos do DOM, correto?
precisa saber é o seguinte

12
Lembre-se de que incluir "es2015.promise" ou qualquer outro item não inclui um polyfill no seu código compilado. Em vez disso, basta notificar o compilador de que seu código está usando promessas e deve estar de acordo com isso. Se você precisa adicionar promessas polyfills, considere quer importar o polyfill em seu código ou usando babel com correspondente máquinas (babel-preset-env) como um pós-passo (ou próxima loader em Webpack)
Dmitrii Sorin

20
Esses grupos fazem uma promessa ao compilador: "por favor, não reclame dessas APIs, prometo que o navegador as apoiará". Por exemplo, se você adicionar es6e não incluir polyfills , os navegadores antigos serão bloqueados.
9788 Steve Barry
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.