因此,另一个问题(如何使用打字稿 导入 模块)的一般答案是:
1)创建blah.d.ts定义文件。
2)使用:
/// <reference path="./defs/foo/foo.d.ts"/>
import foo = require("foo");
至关重要的是,您需要 在 node_modules中的某个位置加载文件foo.d.ts和foo.html" target="_blank">js; 并且 NAME foo必须与两者 完全
匹配。现在…
我想回答的问题是如何 编写 一个可以以这种方式导入的打字稿模块?
可以说我有一个像这样的模块:
- xq/
- xq/defs/Q.d.ts
- xq/index.ts
- xq/base.ts
- xq/thing.ts
我想从base.ts中导出带有类’Base’的模块’xq’,从thing.ts中导出’Thing’的模块。
如果这是javascript中的节点模块,则我的index.ts看起来像:
var base = require('./base');
var thing = require('./thing');
module.exports = {
Base: base.Base,
Thing: thing.Thing
};
让我们尝试使用类似的打字稿文件:
import base = require('./base');
export module xq {
export var base = base.Base;
}
调用它:
tsc base.ts index.ts things.ts ... --sourcemap --declaration --target ES3
--module commonjs --outDir dist/xq
怎么了?好吧,我们得到了base.d.ts:
export declare class Base<T> {
...
}
和无用的索引。d.ts:
export declare module xq {
var Base: any; // No type hinting! Great. :(
}
完全无效的javascript,不会触发模块导入:
(function (xq) {
xq.base = xq.base.Base;
})(exports.xq || (exports.xq = {}));
var xq = exports.xq;
我已经尝试了很多关于主题的变体,而我唯一可以使用的是:
declare var require;
var base = require('./base');
export module xq {
export var base = base.Base;
}
…但这显然完全破坏了类型检查器。
所以。
Typescript很棒,但是这个模块的东西完全糟透了。
1)是否可以使用内置的定义生成器(我很怀疑)
2)您如何手工操作?我已经在.d.ts文件中看到了import语句,我认为这意味着有人已经找到了解决方法。这些工作如何?您如何为其中带有导入语句的声明的模块编写打字稿?
(例如,我怀疑执行模块声明的正确方法是:
/// <reference path="base.d.ts" />
declare module "xq" {
import base = require('./base');
module xq {
// Some how export the symbol base.Base as Base here
}
export = xq;
}
…但我不知道要输入的打字稿是什么)。
对于JavaScript:
var base = require('./base');
var thing = require('./thing');
module.exports = {
Base: base.Base,
Thing: thing.Thing
};
打字稿
import base = require('./base');
import thing = require('./thing');
var toExport = {
Base: base.Base,
Thing: thing.Thing
};
export = toExport;
甚至这个打字稿:
import base = require('./base');
import thing = require('./thing');
export var Base = base.Base;
export var Thing = thing.Thin;
问题内容: 我正在尝试打字稿。在hello世界阶段它工作正常。我现在正在尝试使用npm模块: = 这不起作用: -> -> 看着打字稿文档和谷歌没有帮助。其他S /O问题未得到回答 元素: 打字稿1.8最新 是的,lodash已安装并存在于我的文件系统中(已选中) 我也做了 变种或不起作用 我试图调整tsconfig.json选择在其他的答案建议 ,并在一些答案建议,仍然无法正常工作 我们如何在打
在控制台中,当运行时,命令现在被本机启用(node版本 但是,当我添加打字稿层时,我总是得到。 我如何解决这个问题? 背景思想:本机使用获取并摆脱和依赖项 < code>tsconfig.json和一般设置:https://github . com/NEX ys-system/server-boilerplate/blob/master/ts config . JSON 另见: Fetch API
我已经在我的.html文件中定义了这些: 然后在test.js: 但Typescript错误地指出:“找不到名称‘树’” 我也尝试编译与和放置在test.js文件的顶部,但它再次出错:
问题内容: 如果要使用节点8编译源代码,建议为打字稿配置什么? 大多数教程使用以下 tsconig.json : 但是现在我发现,并非所有可用功能都受支持。例如,抛出错误: 类型’string []’不存在属性’includes’。 我发现了一个问题,即解决了这个问题。解决方法是使用lib 。我可以覆盖默认库: 但是我不确定这是否是节点8的最佳配置-该库不支持更多功能吗?是否定义了很多功能? 所以
我是打字稿的新手。现在我正在学习课程并得到一些问题: 当我们扩展父类时,我们必须使用super()。但是,如果我想省略父构造函数,我们可以这样做或覆盖它吗? [日志]:"不要显示" [日志]:“我的名字是派生的”
我正在努力寻找 有什么不同?