使用TypeScript创建NativeScript自定义UI插件

时间:2017-01-11 15:14:44

标签: angularjs typescript nativescript

我尝试在TypeScript中创建自定义UI插件

这是我采取的步骤

  1. 在本地文件夹中创建插件项目
  2. 在插件项目根目录中为自定义UI编写.ts文件
  3. 在插件项目根目录中使用tsc命令从这些.ts文件中生成.js文件
  4. 转到测试NativeScript项目并运行tns plugin add <local plugin path>以包含创建的插件
  5. 但我在第3步编译错误,因为我导入语句如下

    &#13;
    &#13;
    import { ContentView } from "ui/content-view";
    import...
    &#13;
    &#13;
    &#13;

    我在这里引用了一个示例https://github.com/NathanWalker/nativescript-cardview/blob/master/cardview.ios.ts

    我的问题是示例中的cardview.ios.ts&#39; nativescript-cardview&#39;正在编译到cardview.io.js?这似乎不可能......

2 个答案:

答案 0 :(得分:0)

在插件中,您引用了作者创建的演示应用程序,并使用该演示中的tns-core-modules的声明文件。查看 tsconfig.json

中包含 tns-core-modules.d.ts at this line

您可以按照这种做法测试案例,对于您的发布,您可以从app node_modules文件夹创建tns-core-modules(和参考)声明文件的相对路径,如done here

由于package.json中的旁注noEmiOnError标记将允许翻译继续而不会挂起错误。

答案 1 :(得分:0)

感谢您链接到您的回购。 NativeScript's docs声明&#34;如果您使用的是转换程序,请确保在您的插件中包含已转换的JavaScript文件&#34;。

您的package.json将cardview.js指定为入口点,但您已编译的JavaScript文件尚未添加到repo中。我通过在\ dist目录中提交已转换的文件,在nativescript-midi plugin中解决了这个问题。该插件使用ES 6编写,但转换为ES 5以供使用。为了确保src和dist目录保持同步,我使用git pre-commit钩子自动运行build命令并提交结果。如果克隆nativescript-midi repo,则可以在.git / hooks / pre-commit中查看它。为插件使用此方法的好处是,它还允许未使用TypeScript的开发人员使用它。