Javascript 无法在Typescript中进行打字
编辑:我重写了这篇文章,以便更好地解释我所采取的步骤和我面临的问题 我从一个简单的html/js页面开始。 我还使用了cdn中的Javascript 无法在Typescript中进行打字,javascript,html,typescript,typescript-typings,Javascript,Html,Typescript,Typescript Typings,编辑:我重写了这篇文章,以便更好地解释我所采取的步骤和我面临的问题 我从一个简单的html/js页面开始。 我还使用了cdn中的xregexp var reg=XRegExp(“^lights:(?开|关)$”,“xgi”); var match=XRegExp.exec(“灯:开”,reg); document.body.innerText=“灯光为:”+匹配[“选项”] 尝试在使用XRegExp的文件顶部添加以下行: /// <reference path="./path/to/do
xregexp
var reg=XRegExp(“^lights:(?开|关)$”,“xgi”);
var match=XRegExp.exec(“灯:开”,reg);
document.body.innerText=“灯光为:”+匹配[“选项”]代码>
尝试在使用XRegExp的文件顶部添加以下行:
/// <reference path="./path/to/downloaded/xregexp.d.ts" />
//
有关此问题的更多信息请尝试在使用XRegExp的文件顶部添加以下行:
/// <reference path="./path/to/downloaded/xregexp.d.ts" />
//
关于这个问题的更多信息这并不是一个真正的类型脚本问题:如果您想使用npm软件包,强烈建议使用诸如browserify或webpack之类的依赖关系管理器来管理它们。(如果你只是想找一些东西来处理你的模块,我建议你使用browserify)
如果您真的不想使用npm的惊人功能,那么还有一种黑客方法可以解决这个特定问题:将声明文件更改为声明名称空间而不是模块。现在,您可以在项目中的任何位置有效地使用这些类型
只需对声明文件进行以下两项更改,就可以开始了:
- 声明命名空间而不是模块:
declare module 'xregexp' {
//becomes
declare namespace xregexp {
- 清除页面底部的导出:
// remove this:
export = OuterXRegExp;
现在,您可以在项目中的任何位置调用。例如:
var outerxregexp: xregexp.OuterXRegExp.TokenOpts = { trigger: () => true }
但是再次强调,强烈建议使用browserify,或者这不是一个真正的类型脚本问题:如果您想使用npm包,强烈建议使用类似browserify或webpack的依赖关系管理器。(如果你只是想找一些东西来处理你的模块,我建议你使用browserify)
如果您真的不想使用npm的惊人功能,那么还有一种黑客方法可以解决这个特定问题:将声明文件更改为声明名称空间而不是模块。现在,您可以在项目中的任何位置有效地使用这些类型
只需对声明文件进行以下两项更改,就可以开始了:
- 声明命名空间而不是模块:
declare module 'xregexp' {
//becomes
declare namespace xregexp {
- 清除页面底部的导出:
// remove this:
export = OuterXRegExp;
现在,您可以在项目中的任何位置调用。例如:
var outerxregexp: xregexp.OuterXRegExp.TokenOpts = { trigger: () => true }
但是,再次强烈建议,如果您有一个tsconfig.json
文件,则需要添加d.ts
文件,如下所示:
{
"files": [
"path/to/definition/xregexp.d.ts",
]
}
如果您有一个tsconfig.json
文件,则需要添加d.ts
文件,如下所示:
{
"files": [
"path/to/definition/xregexp.d.ts",
]
}
谢谢你的回复。我试过这个指令,但还是不走运。我已经用更多的细节更新了帖子谢谢回复。我试过这个指令,但还是不走运。更新了文章的更多细节您提到的声明文件声明了一个显式模块。因此,如果您不想使用任何模块,而只想使用全局依赖项(这很好),那么如果不进行一些更改,使其成为全局声明文件,您将无法使用该声明文件。@PelleJacobs,这很有意义。知道了。感谢您提到的声明文件声明了一个显式模块。因此,如果您不想使用任何模块,而只想使用全局依赖项(这很好),那么如果不进行一些更改,使其成为全局声明文件,您将无法使用该声明文件。@PelleJacobs,这很有意义。知道了。谢谢