huixisheng / huixisheng.github.com

前端开发者说,记录前端的故事
http://huixisheng.github.io/
12 stars 3 forks source link

TypeScript声明文件 #46

Open huixisheng opened 5 years ago

huixisheng commented 5 years ago

在使用第三方库qiniu包的时候出现如下报错:

src/core.ts:1:8 - error TS1192: Module '"...packages/core/node_modules/qiniu/index"' has no default export.

1 import qiniu from 'qiniu';

解决:

import * as qiniu from 'qiniu';
// import qiniu = require('qiniu');

肯定是文档的语法看的不够仔细,关于这方面的内容做个简单的记录。

TypeScript Types Search

$ npm install typings -g
$  typings search --name 库准确名称

@typestypeRootstypes

默认所有可见的"@types"包会在编译过程中被包含进来。 node_modules/@types文件夹下以及它们子文件夹下的所有包都是可见的; 也就是说, ./node_modules/@types/,../node_modules/@types/和../../node_modules/@types/等等。

如果指定了typeRoots,只有typeRoots下面的包才会被包含进来。

如果指定了types,只有被列出来的包才会被包含进来

指定"types": []来禁用自动引入@types包。

tsconfig.json · TypeScript中文网 · TypeScript——JavaScript的超集

UMD

UMD模块是指那些既可以作为模块使用(通过导入)又可以作为全局(在没有模块加载器的环境里)使用的模块。 许多流行的库,比如 Moment.js,就是这样的形式。 比如,在Node.js或RequireJS里,你可以这样写:

import moment = require("moment");
console.log(moment.format());

从一个模块或UMD库 如果你的模块或UMD库依赖于一个UMD库,使用import语句: import * as someLib from 'someLib'; 不要使用/// <reference指令去声明UMD库的依赖!

包含声明文件到你的npm包

package.json指定主声明文件main。 设置 types

注意"typings"与"types"具有相同的意义,也可以使用它。

不要在声明文件里使用///

在发布声明文件包之后,确保在DefinitelyTyped外部包列表里面添加一条引用

发布到@types 提pr, 相关说明

参考

声明文件 · TypeScript 入门教程 TypeScript 中的声明文件 | 如今仍是遥远的理想之城 JS如何捆绑TypeScript声明文件 - pwc1996的博客 - CSDN博客

huixisheng commented 5 years ago

模块 · TypeScript中文网 · TypeScript——JavaScript的超集