|
| 1 | +--- |
| 2 | +title: "Global: Módulo de modificação" |
| 3 | +layout: docs |
| 4 | +permalink: /pt/docs/handbook/declaration-files/templates/global-modifying-module-d-ts.html |
| 5 | +--- |
| 6 | + |
| 7 | +## _Módulos de modificação global_ |
| 8 | + |
| 9 | +Um _módulo de modificação global_ altera valores existentes no escopo global quando são importados. |
| 10 | +Por exemplo, pode existir uma biblioteca que adiciona novos membros ao `String.prototype` quando importada. |
| 11 | +Este padrão é de certa forma perigoso devido a possibilidade de conflitos em tempo de execução, |
| 12 | +mas ainda assim podemos escrever um arquivo de declaração para isso. |
| 13 | + |
| 14 | +## Identificando módulos de modificação global |
| 15 | + |
| 16 | +Módulos de modificação global são geralmente fáceis de identificar em sua documentação. |
| 17 | +No geral, são similares a plugins globais, mas precisam de uma chamada `require` para ativar seus efeitos. |
| 18 | + |
| 19 | +Você pode ver uma documentação como essa: |
| 20 | + |
| 21 | +```js |
| 22 | +// chamada ao 'require' que não utiliza o valor retornado |
| 23 | +var unused = require("magic-string-time"); |
| 24 | +/* ou */ |
| 25 | +require("magic-string-time"); |
| 26 | + |
| 27 | +var x = "hello, world"; |
| 28 | +// Cria novos métodos em tipos nativos |
| 29 | +console.log(x.startsWithHello()); |
| 30 | + |
| 31 | +var y = [1, 2, 3]; |
| 32 | +// Cria novos métodos em tipos nativos |
| 33 | +console.log(y.reverseAndSort()); |
| 34 | +``` |
| 35 | + |
| 36 | +Aqui está um exemplo |
| 37 | + |
| 38 | +```ts |
| 39 | +// Definições de tipo para [~NOME DA BIBLIOTECA~] [~NÚMERO DE VERSÃO OPCIONAL~] |
| 40 | +// Projeto: [~NOME DO PROJETO~] |
| 41 | +// Definições por: [~SEU NOME~] <[~UMA URL PARA VOCÊ~]> |
| 42 | + |
| 43 | +/*~ Esse é o arquivo de modelo do módulo de modificação global. Você deve renomeá-lo para index.d.ts |
| 44 | + *~ e colocá-lo em uma pasta com o mesmo nome do módulo. |
| 45 | + *~ Por exemplo, se você estiver escrevendo um arquivo para "super-greeter", este |
| 46 | + *~ arquivo deve estar em 'super-greeter/index.d.ts' |
| 47 | + */ |
| 48 | + |
| 49 | +/*~ Observação: Se seu módulo de modificação global é passível de ser chamado ou instanciado, você |
| 50 | + *~ precisará combinar os padrões daqui com aqueles arquivos de modelo na classe ou função de módulo |
| 51 | + */ |
| 52 | + |
| 53 | +declare global { |
| 54 | + /*~ Aqui, declare coisas que vão no namespace global, ou aumente |
| 55 | + *~ as declarações existentes no namespace global |
| 56 | + */ |
| 57 | + interface String { |
| 58 | + fancyFormat(opts: StringFormatOptions): string; |
| 59 | + } |
| 60 | +} |
| 61 | + |
| 62 | +/*~ Se seu módulo exporta tipos ou valores, escreva-os como de costume */ |
| 63 | +export interface StringFormatOptions { |
| 64 | + fancinessLevel: number; |
| 65 | +} |
| 66 | + |
| 67 | +/*~ Por exemplo, declarando um método no módulo (além dos seus efeitos colaterais globais) */ |
| 68 | +export function doSomething(): void; |
| 69 | + |
| 70 | +/*~ Se seu módulo não exportar nada, você precisara dessa linha. Caso contrário, exclua-a */ |
| 71 | +export {}; |
| 72 | +``` |
0 commit comments