我正在使用nativescript angular。我有一个名为SomeClass的类,可以分别访问iOS和Android的本机API。
我写了两个文件:
someclass.android.ts
async/await
someclass.ios.ts
export class SomeClass {
someFunction() {
if(isAndroid) {
// do some android specific code
}
}
}
现在,在 app.component.ts 中,我正在使用SomeClass这样:
export class SomeClass {
someFunction() {
if(isIOS) {
// do some ios specific code
}
}
}
没有.android.ts或.ios.ts,以使nativescript可以根据运行的平台选择正确的文件。
然后在代码中,我这样使用SomeFunction:
import { SomeClass } from './../shared-code/someclass';
使用此设置,一切都可以在iOS和Android上完美运行,但是出现以下错误
错误TS2307:找不到模块'./../ shared-code / someclass'。
您是否知道如何告诉nativescript / tslint考虑.android和.ios文件而不显示此错误?
谢谢
答案 0 :(得分:0)
这是解决方案:
在'someclass.ios.ts'和'someclass.android.ts'旁边,创建定义文件并将其命名为'someclass.d.ts (不是index.d.ts)。无需将文件放在单独的文件夹中。
在 someclass.d.ts 中,export declare
这样的类:
export declare class SomeClass {
/**
* someFunction, is a function that does this and that (description)
*/
someFunction(): void;
}
然后,您可以从另一个文件中使用它,如下所示:
在 app.component.ts中:
import { SomeClass } from './../shared-code/someclass';
请记住使用/ someclass,不带任何扩展名。 这将解决build和tslint错误。