无法使用打字稿中的index.d.ts扩展Process接口

时间:2018-11-11 09:40:00

标签: typescript

我在这个github上拥有一个准系统项目,其基本结构如下:

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true
  }
}

index.d.ts

declare namespace NodeJS {
    export interface Process {
        browser: boolean;
    }
}

index.ts

const x = process.browser;

package.json

{
  "name": "tsc-interface-ext",
  "version": "0.0.0",
  "main": "index.ts",
  "license": "MIT",
  "devDependencies": {
    "@types/node": "^10.12.5",
    "tslint": "^5.11.0",
    "typescript": "^3.1.6"
  }
}

但是尽管有index.d.ts文件,Typescript仍然返回错误,提示[ts] Property 'browser' does not exist on type 'Process'.我认为index.d.ts会在整个项目范围内添加必要的扩展名,但显然不是

黑客与nextjs将浏览器属性附加到进程并执行其他一些古怪的事情有关,这些问题需要对服务器的全局命名空间进行polyfill,

有人知道如何在项目中完成这种接口扩展吗?谢谢!

1 个答案:

答案 0 :(得分:0)

index.d.ts存在时,TypeScript忽略index.ts,因为它假定可能从index.d.ts生成index.ts并且index.ts是最新的。将index.d.ts重命名为另一个名称(例如declarations.d.ts)将解决此问题。