[LayaAir 2.0]使用命名空间遇到的问题
这个百度一下就能解决的问题
感觉是因为js文件执行顺序不对~
你需要把命名空间也导出。
export namespace global2 {
......
在使用的地方import {global2} from "......"
BTW:这样的命名空间不好用,你多个文件同一个命名空间,你import的时候就会有问题。
你可以单独创建一个文件,把其他文件都在这个文件重新导出
如:global2/index.ts
export * from "./Point"
使用的地方,import * as global2 from "......global2/index";
let p = new global2.Point;
export namespace global2 {
......
在使用的地方import {global2} from "......"
BTW:这样的命名空间不好用,你多个文件同一个命名空间,你import的时候就会有问题。
你可以单独创建一个文件,把其他文件都在这个文件重新导出
如:global2/index.ts
export * from "./Point"
使用的地方,import * as global2 from "......global2/index";
let p = new global2.Point;
感觉还是有问题啊。 命名空间不好用,你多个文件同一个命名空间,你import的时候就会有问题。
ts里官方可以用/// <reference path="A.ts" />来引用到其他文件中的类。 但是laya在编译的时候,并没有把其他文件的ts转换到bundle.js中。导致在运行过程中找不到。
laya只处理了import {A} from "......" 。这样用的真的是蛋疼。一个命名空间,只能在一个ts文件中
ts里官方可以用/// <reference path="A.ts" />来引用到其他文件中的类。 但是laya在编译的时候,并没有把其他文件的ts转换到bundle.js中。导致在运行过程中找不到。
laya只处理了import {A} from "......" 。这样用的真的是蛋疼。一个命名空间,只能在一个ts文件中
这个问题着实蛋痛,没有egret 的简单方便。
同样遇到了这个问题,
比如有3个脚本,A.ts、B.ts、C.ts,
三个脚本都用一个命名空间NameSpace1,里面定义不同的类,
这时候在Main.ts中 new NameSpace1.A();就报错,说找不到命名空间!
如果在命名空间前都加export,那么在Main.ts中就会提示有3个NameSpace1,他们分别对应A.ts、B.ts、C.ts,而且A.ts、B.ts、C.ts就不能互调了。
这不是语言问题,就是编译器IDE问题,同求解决!否则写代码太难受了!
比如有3个脚本,A.ts、B.ts、C.ts,
三个脚本都用一个命名空间NameSpace1,里面定义不同的类,
这时候在Main.ts中 new NameSpace1.A();就报错,说找不到命名空间!
如果在命名空间前都加export,那么在Main.ts中就会提示有3个NameSpace1,他们分别对应A.ts、B.ts、C.ts,而且A.ts、B.ts、C.ts就不能互调了。
这不是语言问题,就是编译器IDE问题,同求解决!否则写代码太难受了!
非引擎bug 不要放到bug分类里
要回复问题请先登录