覆盖从NPM @Types下载的V2.2.2中的TypeScript类型

时间:2017-05-18 09:14:06

标签: reactjs typescript react-bootstrap

我正在使用react-router-bootstrap组件和DefinitelyTyped中的定义。我的问题是下载的定义与组件不匹配。我已经创建了一个拉取请求来解决这个问题,但由于我不知道它何时会被修补,我必须覆盖它。我不能只在本地编辑位于node_modules\@types的类型定义文件,因为我们是一个正在处理此项目的团队,并且未签入node_modules文件夹。

如何覆盖类型定义?我只是不想覆盖LinkContainer.d文件,因为其他文件可以工作。

拉请求:

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/16600

我尝试在我的打字文件夹中创建一个名为LinkContainer.d.ts的文件,该文件是正确的,但它没有被拾取。在同一个文件夹中,我有一个global.d.ts接口可以很好地接收。

/// <reference types="react-router-bootstrap" />
import { ComponentClass } from "react";
import { NavLinkProps } from "react-router-dom";

type LinkContainer = ComponentClass<NavLinkProps>;
declare const LinkContainer: LinkContainer;

export default LinkContainer;

1 个答案:

答案 0 :(得分:6)

基于此示例的解决方案:

https://github.com/Microsoft/TypeScript/issues/11137#issuecomment-251755605

在根文件夹中添加名为typings的文件夹。

编辑tsconfig.json:

{
  "compilerOptions": {
    //baseUrl and paths needed for custom typings
    "baseUrl": ".",
    "paths": {
      "*": [ "./typings/*" ]
    },
    ...

typings - 名为react-router-bootstrap的文件夹中添加一个文件夹(名称应与模块相同),并在其中添加一个名为index.d.ts的文件。

在文件index.d.ts中添加您的自定义类型或参考:

import { ComponentClass } from "react";
import { NavLinkProps } from "react-router-dom";

type LinkContainer = ComponentClass<NavLinkProps>;
export const LinkContainer: LinkContainer;

现在导入模块时,加载了自定义类型:import { LinkContainer } from 'react-router-bootstrap';