相关疑难解决方法(0)

如何为TypeScript配置自定义全局接口(.d.ts文件)?

在过去的几个小时里,我一直在努力解决这个问题,而我似乎无法在互联网上找到任何可以清楚解释这个,据说是简单概念的东西.

我目前正在研究一个使用Webpack2和TypeScript的ReactJS项目.除了一件事之外,一切都完美无缺 - 我无法找到一种方法将我自己编写的界面移动到单独的文件中,以便它们对整个应用程序可见.

出于原型设计的目的,我最初在使用它们的文件中定义了接口,但最终我开始添加一些在多个类中需要的东西,并且当所有问题都开始时.无论我对我做了什么改变tsconfig.json,无论我把文件放在哪里,我的IDE和Webpack都抱怨无法找到名字(Could not find name 'IMyInterface').

这是我当前的tsconfig.json文件:

{
  "compilerOptions": {
    "baseUrl": "src",
    "outDir": "build/dist",
    "module": "commonjs",
    "target": "es5",
    "lib": [
      "es6",
      "dom"
    ],
    "typeRoots": [
      "./node_modules/@types",
      "./typings"
    ],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react",
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": false,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": true
  },
  "exclude": [
    "node_modules",
    "build",
    "scripts",
    "acceptance-tests",
    "webpack",
    "jest",
    "src/setupTests.ts"
  ],
  "types": [
    "typePatches"
  ]
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我tsconfig.json位于项目目录的根目录中,所有源都在 …

typescript typescript1.8 typescript-typings typescript2.0

48
推荐指数
2
解决办法
3万
查看次数

在node.js中扩展TypeScript Global对象

我有一个node.js应用程序,它将一些配置信息附加到global对象:

global.myConfig = {
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)

TypeScript编译器不喜欢这个,因为该Global类型没有名为的对象myConfig:

TS2339:"全局"类型中不存在属性"myConfig".

我不想这样做:

global['myConfig'] = { ... }
Run Code Online (Sandbox Code Playgroud)

如何扩展Global类型以包含myConfig或仅告诉TypeScript闭嘴并信任我?我更喜欢第一个.

我不想改变里面的声明node.d.ts.我看到了这个SO帖子并尝试了这个:

declare module NodeJS  {
    interface Global {
        myConfig: any
    }
}
Run Code Online (Sandbox Code Playgroud)

作为扩展现有Global界面的一种方式,但它似乎没有任何影响.

global node.js typescript

46
推荐指数
7
解决办法
3万
查看次数

'PromiseConstructor'.ts(2339) 类型上不存在属性 'allSettled'

我正在尝试将Promise.allSettledAPI 与 TypeScript一起使用。代码在这里:

server.test.ts

it('should partial success if QPS > 50', async () => {
  const requests: any[] = [];
  for (let i = 0; i < 51; i++) {
    requests.push(rp('http://localhost:3000/place'));
  }
  await Promise.allSettled(requests);
  // ...
});
Run Code Online (Sandbox Code Playgroud)

但是 TSC 抛出一个错误:

'PromiseConstructor'.ts(2339) 类型上不存在属性 'allSettled'

我已经将这些值添加到lib选项中tsconfig.json

tsconfig.json

{
  "compilerOptions": {
    /* Basic Options */
    "target": "ES2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,
    "module": "commonjs" /* Specify …
Run Code Online (Sandbox Code Playgroud)

javascript typescript es6-promise

41
推荐指数
5
解决办法
2万
查看次数

打字稿中的全局类型

有没有办法在您的打样文件中创建一个定义全局可访问类型的文件?

我喜欢打字稿但发现当我想要真正的类型安全时,我必须明确地从整个系统中导入类型.这很烦人.

typescript typescript-typings

16
推荐指数
5
解决办法
1万
查看次数

打字稿:无法识别 .d.ts 文件

这个可能非常简单,但我想弄清楚它会发疯。

我在外部 index.ts 文件中有一个非常简单的自执行函数,需要在 window 对象上注册一个全局变量。我想像这样分配它:

(() => {
  window.myCustomGlobal = new MyCustomGlobal();
})()
Run Code Online (Sandbox Code Playgroud)

我在 index.ts 旁边创建了 index.d.ts:

import { MyCustomGlobal} from './classes';

declare interface Window {
  myCustomGlobal: MyCustomGlobal;
}
Run Code Online (Sandbox Code Playgroud)

上面没有错误,一切看起来都很好。应用程序编译正常。

但是,在 IDE 中,我收到一个错误: ts2339: Property 'myCustomGlobal' does not exist on type 'Window'

我一生都无法弄清楚究竟是什么让 Typescript“弄清楚”要包含什么 .d.ts 文件。在某些库中,将 .d.ts 文件与 .js 文件放在一起会导致它被拾取,并且工作正常。事实上,我使用了与上面完全相同的接口和一个全局第三方库,效果很好;似乎我的 IDE 无法接收它。

我已经尝试添加index.d.ts到tsconfig.jsoninclude以及files没有运气。

有人可以解释一下,就像对孩子一样,是什么导致 TS 拿起声明文件?有时我觉得我明白了,然后在像这样愚蠢的简单例子中,我觉得自己像个白痴。

谢谢

typescript

6
推荐指数
2
解决办法
7601
查看次数