Nativescript - 特定于平台的代码

时间:2017-09-29 01:07:43

标签: nativescript

我有一个特定于iOS的代码(类定义),并希望包含在单独的ios特定文件中。

所以我创建了两个文件

utils2.ios.ts< - 在这里添加了我的代码

utils2.android.ts

然后从另一个文件中,我做了:

import utils2 = require(“./ utils2”);

但是我收到一条错误消息,指出找不到该模块。

我必须走这条路,因为我有一个类定义 代码,如果我只有一个文件,我在Android上会遇到运行时错误。

打字稿是否支持平台特定文件?

或者另一种选择 - 在ts文件中可能是这样的

if ios

这样做

与C preprocesser相似

1 个答案:

答案 0 :(得分:2)

你可以只使用一个utils.ts文件,在其中你可以做你提到的平台特定逻辑。您关于module not found的问题可能只是该模块的路径问题,而不是该模块实际上并不存在。另请注意,Typescript并不真正“支持”特定于平台的文件。 Nativescript接受.android.ts.ios.ts个文件,并在运行时加载运行平台所需的文件。所以,仅仅是与TS无关的FYI:)

Nativescript在platform中提供了tns-core-modules模块。从代码中的平台模块导入{ isAndroid }{ isIOS },并将其用作

if (isAndroid) { 
  // do android only here 
} else { 
  // ios 
}