我在这个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,
有人知道如何在项目中完成这种接口扩展吗?谢谢!
答案 0 :(得分:0)
当index.d.ts
存在时,TypeScript忽略index.ts
,因为它假定可能从index.d.ts
生成index.ts
并且index.ts
是最新的。将index.d.ts
重命名为另一个名称(例如declarations.d.ts
)将解决此问题。