2017-01-11 69 views
0

我想在打字稿創建NativeScript自定義UI插件與打字稿

這裏創建一個自定義UI插件的我走

  1. 在本地文件夾創建一個插件項目的步驟
  2. 寫.TS自定義UI文件的插件項目的根
  3. 生成.js文件掉那些.ts文件與在插件項目的根tsc命令
  4. 去到TES牛逼NativeScript項目並運行tns plugin add <local plugin path>包括創建插件

但我在第3步中得到編譯錯誤,因爲我有導入語句如下

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

我在這裏引用的例子https://github.com/NathanWalker/nativescript-cardview/blob/master/cardview.ios.ts

我的問題是如何在示例'nativescript-cardview'中的cardview.ios.ts是正在編譯爲cardview.io.js?這似乎是不可能的...

回答

0

在插件中,您已經引用作者創建了一個演示應用程序,並使用該演示中的tns-core-modules聲明文件。看at this line,其中TNS-核心modules.d.ts包括在tsconfig.json

您可以按照這種做法進行測試的情況下對你的版本中,您可以創建到tns-相對路徑核心模塊(和引用)聲明文件從應用程序node_modules文件夾中完成here

作爲便箋noEmiOnError旗幟在您的package.json將允許翻譯繼續而不掛錯誤。

+0

我不熟悉在打字稿項目中引用文件,,謝謝你的答案。它幫助了很多! –

0

感謝您鏈接到您的回購。 NativeScript's docs指出「如果您使用的是轉譯器,請確保將轉譯的JavaScript文件包含在您的插件中」。

您的package.json將cardview.js指定爲入口點,但您的轉錄JavaScript文件尚未添加到回購站中。我在我的nativescript-midi plugin中通過提交\ dist目錄中的轉譯文件解決了這個問題。該插件是在ES 6中編寫的,但轉換爲ES 5以供使用。爲了確保src和dist目錄保持同步,我使用了一個git pre-commit鉤子,它會自動運行build命令並提交結果。如果您克隆nativescript-midi回購,您可以在.git/hooks/pre-commit中查看它。爲您的插件使用此方法的好處是,它也將允許未使用TypeScript的開發人員使用它。