如何正确使用 someClass.android.ts 和 someClass.ios.ts
How to use someClass.android.ts and someClass.ios.ts without errors
我正在使用 nativescript angular。我有一个名为 SomeClass 的 class,它分别访问 iOS 和 Android 的原生 API。
我写了两个文件:
someclass.android.ts
export class SomeClass {
someFunction() {
if(isAndroid) {
// do some android specific code
}
}
}
someclass.ios.ts
export class SomeClass {
someFunction() {
if(isIOS) {
// do some ios specific code
}
}
}
现在,在 app.component.ts 中,我像这样使用 SomeClass:
import { SomeClass } from './../shared-code/someclass';
没有 .android.ts 或 .ios.ts,使 nativescript 能够根据 运行 平台选择正确的文件。
然后在代码中,我像这样使用 SomeFunction:
...
const someClass = new SomeClass();
someClass.someFunction();
...
使用此设置,在 iOS 和 Android 上一切正常,但出现以下错误
error TS2307: Cannot find module './../shared-code/someclass'.
您知道如何告诉 nativescript/tslint 考虑 .android 和 .ios 文件而不显示此错误吗?
谢谢
解决方法如下:
除了 'someclass.ios.ts' 和 'someclass.android.ts',创建一个定义文件并将其命名为 'someclass.d.ts'(不是 index.d.ts)。无需将文件放在单独的文件夹中。
在someclass.d.ts中,export declare
中的class是这样的:
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。
这将解决构建和 tslint 错误。
我正在使用 nativescript angular。我有一个名为 SomeClass 的 class,它分别访问 iOS 和 Android 的原生 API。
我写了两个文件:
someclass.android.ts
export class SomeClass {
someFunction() {
if(isAndroid) {
// do some android specific code
}
}
}
someclass.ios.ts
export class SomeClass {
someFunction() {
if(isIOS) {
// do some ios specific code
}
}
}
现在,在 app.component.ts 中,我像这样使用 SomeClass:
import { SomeClass } from './../shared-code/someclass';
没有 .android.ts 或 .ios.ts,使 nativescript 能够根据 运行 平台选择正确的文件。
然后在代码中,我像这样使用 SomeFunction:
...
const someClass = new SomeClass();
someClass.someFunction();
...
使用此设置,在 iOS 和 Android 上一切正常,但出现以下错误
error TS2307: Cannot find module './../shared-code/someclass'.
您知道如何告诉 nativescript/tslint 考虑 .android 和 .ios 文件而不显示此错误吗?
谢谢
解决方法如下:
除了 'someclass.ios.ts' 和 'someclass.android.ts',创建一个定义文件并将其命名为 'someclass.d.ts'(不是 index.d.ts)。无需将文件放在单独的文件夹中。
在someclass.d.ts中,export declare
中的class是这样的:
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。 这将解决构建和 tslint 错误。