为了账号安全,请及时绑定邮箱和手机立即绑定

typescript namespace 和 interface有什么区别

typescript namespace 和 interface有什么区别

慕娘9325324 2018-10-19 14:11:36
现在我使用typescript 的 v2.1.5版本使用webpack打包文件之前已经装过依赖包和@types了但是我在编译的时候一直报history模块的一个错误:[ts]Type 'History' is not assignable to type 'History'.  Two different types with this name exist, but they are unrelated.我看了一下history/index.d.ts, 发现里面有多个export ... history, 如:export as namespace History;export interface History {    ... }export namespace History {    ... }createBrowserHistory.d.tsimport { History } from './index';import { getConfirmation } from './DOMUtils';export interface BrowserHistoryBuildOptions {   basename?: string;   forceRefresh?: boolean;   getUserConfirmation?: typeof getConfirmation;   keyLength?: number; }export default function createBrowserHistory(options?: BrowserHistoryBuildOptions): History;我想知道这些这个问题怎么解决?怎样才能编译通过?
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

简单方法:直接用react-routerbrowserHistory

题主没给出具体的版本,所有我按下面这个解释:

{  "name": "segfault",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {   
 "test": "echo \"Error: no test specified\" && exit 1"
  },  "author": "",  "license": "ISC",  "dependencies": {    "history": "^4.5.0",    "react-router": "^3.0.0"
  },  "devDependencies": {    "@types/history": "^4.5.0",    "@types/react-router": "^3.0.0"
  }
}

第一个问题是@types/react-router里引用的@types/history的版本是^2devDependencies里的是^4.5.0,所有有了两个不同的History接口,而这两个History接口不兼容。

第二个问题是react-router里的history^3,和@types/react-router里的对不上。

解决方法就是直接用react-router里的browserHistory,也就是`^3"的版本。

或者去github提个issue了,把版本都改对了。


查看完整回答
反对 回复 2018-11-15
  • 1 回答
  • 0 关注
  • 1550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信