【问题标题】:How to use exported interface from TypeScript definition file?如何使用从 TypeScript 定义文件中导出的接口?
【发布时间】:2016-11-30 07:57:39
【问题描述】:
我正在尝试使用jssha 的类型化版本并运行npm install @types/jssha --save 并安装了定义(以及库本身)。
在我的测试文件中我现在有import { jsSHA } from 'jssha',在@types/jssha index.d.ts 我看到export interface jsSHA {...}
我希望现在能够在我的测试文件中调用jsSHA,但该值为undefined。
我如何实际使用导出的接口?
【问题讨论】:
标签:
typescript
typescript-typings
【解决方案1】:
export interface jsSHA {...} 并不是你应该如何导入它的指标,因为它是在declare namespace jsSHA { 中声明的。
当您查看该定义文件中的顶级导出时(在最后),您会看到
declare var jsSHA: jsSHA.jsSHA;
export = jsSHA;
export as namespace jsSHA;
无论何时看到export =,最好的导入方式是通过import require:
import jsSHA = require('jssha');
var shaObj = new jsSHA("SHA-512", "TEXT");
shaObj.update("This is a test");
var hash = shaObj.getHash("HEX");
如果您使用module=commonjs 进行编译,则此导入也将起作用:
import * as jsSHA from 'jssha';
【解决方案2】:
如果它实际上是一个接口,它只是用于构建js,不是吗?然后你需要像/// <reference path="path to .d.ts" />这样的东西在文件的顶部