I hereby claim:
- I am geovanisouza92 on github.
- I am geovanisouza92 (https://keybase.io/geovanisouza92) on keybase.
- I have a public key ASCpolGtmdNixlFQCCB-CbnR2smOlL8WtGUTk7GFb5CMfgo
To claim this, I am signing this object:
| interface Buildable<T> { | |
| build(): T; | |
| } | |
| type HasSawThickness = { sawThickness: number }; | |
| type HasDirection = { direction: "horizontal" | "vertical" }; | |
| type HasWidth = { width: number }; | |
| type HasHeight = { height: number }; | |
| type HasPhase = { phase: number }; |
I hereby claim:
To claim this, I am signing this object:
Uma forma simples de reduzir acoplamento modificando apenas a configuração de build.
Como a configuração é "apenas Javascript", fica fácil manipular, porém é importante tomar cuidado para não cair na situação do "na minha máquina funciona", pois cada ambiente pode gerar um bundle diferente. Testar é sempre importante.
Isso pode ser muito útil para injetar arquivos de configuração, implementação de features específicas (tracing, logging, metrics, error tracking, etc.) e até incluir módulos específicos de um ambiente, como suporte a source-map, por exemplo.
| { | |
| "À": "A", | |
| "Á": "A", | |
| "Â": "A", | |
| "Ã": "A", | |
| "Ä": "A", | |
| "Å": "A", | |
| "Ấ": "A", | |
| "Ắ": "A", | |
| "Ẳ": "A", |
| type Direction = keyof IDirectionOptions; | |
| interface IDirectionOptions { | |
| "horizontal": { foo: number; }; | |
| "vertical": { bar: string; }; | |
| "diagonal": { baz: boolean; }; | |
| } | |
| // This structure works |
| // Aqui você define uma enumeração de valores: ela não é constante, vc define | |
| // valores estruturais (não tipos) que são aceitos | |
| type WillyWonkaElevatorDirection = "horizontal" | |
| | "vertical" | |
| // | "diagonal" // Descomente isso | |
| ; | |
| // Aqui você pode usar esse novo tipo | |
| function handleDirection(direction: WillyWonkaElevatorDirection) { | |
| switch (direction) { |
| // isso indica que a função "fn" pode ser invocada com uma lista de objetos que | |
| // tenham, pelo menos, um atributo "id" do tipo number, e que o retorno vai ser | |
| // uma lista de números | |
| function fn<T extends { id: number }>(items: T[]): number[]; | |
| // isso indica que a função "fn" pode ser invocada com uma lista de "qualquer | |
| // coisa" e que o segundo parâmetro deve ser o nome de um atributo presente em | |
| // todos os itens da lista, e que o retorno vai ser uma lista com valores dos | |
| // tipos de cada atributo encontrado na lista | |
| function fn<T, K extends keyof T>(items: T[], idProp: K): T[K][]; |
| const used = process.memoryUsage(); | |
| for (let key in used) { | |
| console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`); | |
| } |
| { | |
| "presets": ["./.babelrc.js"] | |
| } |