Pesquisa de site

Como declarar um alias de tipo global no TypeScript?


Eu tenho um alias type ReactMouseEvent=React.MouseEvent<HTMLDivElement, MouseEvent>

Eu crio um globals.d.ts na pasta types do meu projeto:

// in globals.d.ts
import React = require('react')
declare type ReactMouseEvent = React.MouseEvent<HTMLDivElement, MouseEvent>

e configure typeRoots no tsconfig.json:

{
    "compilerOptions": {
        "typeRoots": [
            "node_modules/@types",
            "./types"
        ]
    }
}

então eu tento este código:

public setPosition(ev: ReactMouseEvent) {
    console.log(ev)
}

mas o VSCode ainda reclama sobre o nome ReactMouseEvent ausente. Como resolvo esse problema?

Atualização: Eu tentei outra maneira de definir o tipo em d.ts:

import React = require('react')

declare global {
  type ReactMouseEvent = React.MouseEvent<HTMLDivElement, MouseEvent>
}

mas isso também não funciona :(

Resposta #1

Nos meus projetos, meus arquivos de declarações estão na raiz src/ (eu tenho: "include": ["./src/**/*"],) e funciona sem definir nenhuma opção typeRoots personalizada no tsconfig.json

Talvez você devesse verificar os outros campos do seu arquivo tsconfig? (certifique-se de incluir/não excluir o arquivo)