相关疑难解决方法(0)

TypeScript 2:无类型npm模块的自定义类型

在尝试在其他地方发布的建议后,我发现自己无法运行使用无类型NPM模块的打字稿项目.下面是一个最小的例子和我尝试的步骤.

对于这个最小的例子,我们假装lodash没有现有的类型定义.因此,我们将忽略该包@types/lodash并尝试手动将其打包文件添加lodash.d.ts到我们的项目中.

文件夹结构

  • node_modules
    • lodash
  • SRC
    • foo.ts
  • 分型
    • 习惯
      • lodash.d.ts
    • 全球
    • index.d.ts
  • 的package.json
  • tsconfig.json
  • typings.json

接下来,文件.

文件 foo.ts

///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';

console.log('Weeee');
Run Code Online (Sandbox Code Playgroud)

文件lodash.d.ts直接从原始@types/lodash包复制.

文件 index.d.ts

/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
Run Code Online (Sandbox Code Playgroud)

文件 package.json

{
  "name": "ts",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "typings": "./typings/index.d.ts",
  "dependencies": {
    "lodash": "^4.16.4"
  },
  "author": "",
  "license": "ISC"
}
Run Code Online (Sandbox Code Playgroud)

文件 tsconfig.json

{
  "compilerOptions": {
    "target": …
Run Code Online (Sandbox Code Playgroud)

npm typescript typescript-typings

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

在Typescript项目中将umd全局变量与模块一起使用

我正在尝试使Leaflet库与我的Typescript项目一起正常运行。

我的项目遵循commonJs模式(源文件中的import \ exports),但是当我使用webpack进行编译时,编译器从文件中提示以下错误,在这些文件中我尝试访问Leaflet L模块公开的全局变量

“ L”表示UMD全局,但当前文件是一个模块。考虑添加导入。

现在,如果我按如下方式将传单导入到源文件中,则可以解决此问题:

import * as L from 'leaflet'
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否可以在所有文件中全局访问t而不必在每个文件中都导入文件。

我进行了深入研究,发现了一些解决方法,您可以像这样声明自己的全局变量:

全球公司

import * as L from "leaflet";

declare global {
  const L: L
}
export {};
Run Code Online (Sandbox Code Playgroud)

我不确定是否建议这样做,感觉有点脏,是否可以通过webpack config来为commonJs项目提供UMD模块公开的全局变量,还是我在胡说八道?我承认尝试理解模块类型及其互换性之间的差异会感到困惑,所以轻松一点!

commonjs typescript webpack umd

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

标签 统计

typescript ×2

commonjs ×1

npm ×1

typescript-typings ×1

umd ×1

webpack ×1