2017-05-18 20 views
1

我使用的组件react-router-bootstrap和定义从DefinitelyTyped。我的问题是下载的定义与组件不匹配。我已经创建了一个可以解决这个问题的拉取请求,但由于我不知道什么时候会修补,所以我必须重写它。我不能仅仅编辑位于node_modules\@types的类型定义文件,因为我们是一个团队在这个项目上工作,并且node_modules文件夹没有签入。覆盖V2.2.2中的TypeScript类型从NPM下载@Type

如何覆盖类型定义?由于其他文件的工作原因,我只想重写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; 

回答

2

解决方案:

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

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

编辑tsconfig.json:

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

添加一个文件夹中的typings -folder称为react-router-bootstrap(名称应该是相同的模块)和内部的一个名为index.d.ts

在文件index.d.ts添加自定义typnings或引用:

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

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

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