gpt4 book ai didi

javascript - Typescript,无法加载内部模块

转载 作者:行者123 更新时间:2023-12-02 16:08:43 25 4
gpt4 key购买 nike

我实际上正在学习 typescript ,并且我遇到了内部模块的一些问题。

事实上,我有三个文件:

index.ts,我在其中启动我的应用程序

///<reference path='RouteManager.ts'/>
import RouteManager = RestifyRouting.RouteManager;

var myManager = new RouteManager();
myManager.init("superpath");

管理我的 REST 路由的 RouteManager.ts

///<reference path='RouteParser.ts'/>
module RestifyRouting {

export class RouteManager {

routeParser:RouteParser;

constructor() {

}

public init(filePath) {
this.routeParser = new RouteParser();
this.routeParser.register("zfaf","callback");
console.log(filePath);
}
}

}

RouteParser 必须解析一些字符串来获取一些信息

module RestifyRouting {

export class RouteParser {

constructor() {

}


public register(path, callback) {
console.log('super register');
}

}

}

我有一个 gulp 文件,它创建了我的 .js 和 d.ts 文件,并且效果很好,除了 index.js 文件。编译器告诉我 RestifyRouting (这是我的内部模块)未定义,我不知道为什么......

你能帮我吗?

PS:每个文件都在同一个文件夹中,这只是一个学习应用程序。

感谢您的提前

最佳答案

从 TypeScript 1.5 开始,模块语法与 ES6 模块语法保持一致,这也是我一直在使用的......

您可以删除对 TypeScript 模块的任何引用,然后直接导出类

index.ts

import { RouteManager } from './RouteManager';
var myManager = new RouteManager();
myManager.init("superpath");

RouteManager.ts

import { RouteParser } from './RouteParser';
export class RouteManager {
routeParser:RouteParser;
constructor() {}
public init(filePath) {
this.routeParser = new RouteParser();
this.routeParser.register("zfaf","callback");
console.log(filePath);
}
}

RouteParser.ts

export class RouteParser {
constructor() {}
public register(path, callback) {
console.log('super register');
}
}

Keeping modules

如果您想继续使用内部模块,那么您必须确保导出您的模块以及模块内的类。

// RouteManager.ts
export module RestifyRouting {
export class RouteManager{}
}

//index.ts
import { RestifyRouting } from './RouteManager';
//usage
var manager = new RestifyRouting.RouteManager();

需要记住的是,您将无法将多个项目导入到同一个名称中。

// i.e.
import { RestifyRouting } from './RouteManager';
import { RestifyRouting } from './RouteParser';

NOTES the {} syntax in the import statement can allow multiple imports

{ Class1, Class2 }

如果导出默认值,则可以跳过 {}:

//Source (foo.ts):
export default class Foo{}
//Reference:
import Foo from './foo';
//usage:
class User {
foo: Foo;
}

关于javascript - Typescript,无法加载内部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com