如何在TypeScript中声明全局类型别名?

时间:2020-09-29 07:42:06

标签: typescript

我有一个别名type ReactMouseEvent = React.MouseEvent<HTMLDivElement, MouseEvent>

我在项目的globals.d.ts文件夹中创建一个types

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

并在tsconfig.json中设置typeRoots

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

然后我尝试以下代码:

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

,但是VSCode仍然抱怨缺少名称ReactMouseEvent。我该如何解决这个问题?

更新:我尝试了另一种在d.ts中定义类型的方法:

import React = require('react')

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

但是这也不起作用:(

1 个答案:

答案 0 :(得分:1)

在我的项目中,我的声明文件位于src / root中(我具有:“ include”:[“ ./src/**/*”],),并且无需在tsconfig.json中设置任何自定义typeRoots选项即可运行

也许您应该检查tsconfig文件的其他字段? (确保您包含/不排除文件)