在使用TypeScript的NativeScript中缺失Android包

4
我收到了以下错误信息:
main-page.ts(15,26): error TS2304: Cannot find name 'android'.

创建一个使用typescript的nativescript项目后。
tns create demo --template typescript

在此添加以下的xml和ts文件。
main-page.xml
<Page xmlns="http://schemas.nativescript.org/tns.xsd">
  <StackLayout>
    <Placeholder creatingView="creatingView"/>
  </StackLayout>
</Page>

main-page.ts

import placeholder = require("ui/placeholder");

export function creatingView(args: placeholder.CreateViewEventData) {
    var nativeView = new android.widget.CalendarView(args.context);
    args.view = nativeView;
}
1个回答

13

这是 TypeScript 编译器的警告,不是错误本身。如果想要避免这些警告,您可以将平台定义安装到您的 Nativescript 项目中:npm i tns-platform-declarations

您仍然可以运行 TSC 将 TypeScript 转换为 Javascript 并且它能够正常工作。这只是类型检查警告,这也是 TypeScript 的好处 :)

希望所有这些都讲得通并对您有所帮助。

https://www.npmjs.com/package/tns-platform-declarations


5
谢谢,@BradMartin,在安装了 tns-platform-declarations 包并将以下代码片段添加到 tsconfig.json 中后:"files": [ "/node_modules/tns-platform-declarations/android17.d.ts" ] 编译器找到了 android 包。请注意,我已经尽力保持原文意思不变,同时使翻译更加通俗易懂。 - Luiz Honda
您介意接受答案,以便在SO线程上解决此问题吗? - Brad Martin
1
我曾经为此苦苦挣扎很久。如果你正在使用TypeScript并且编译失败,因为它找不到某些类/函数(例如android.support.v4.content.ContextCompat.checkSelfPermission),请将其包装为任何类型 - (android.support.v4.content.ContextCompat as any).checkSelfPermission,以便其他人可以参考。 - Starwave
2
更简单的方法是 声明 var android: any,这样每次使用 android 命名空间时就不需要强制转换为 any。 - Brad Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接