当升级到 @nativescript/types 8.2(平台 API 类型声明)时,您可能会注意到一些与各种 iOS 类型相关的 TypeScript 编译错误。在这篇文章中,我将向您展示这样做的原因以及如何使这些类型再次工作。
如果您遇到此问题并且只想了解解决方案,请跳到最后。如果您想了解解释,请继续阅读。
注意:您可以使用
@nativescript/types
,这是一个方便的单个包,其中包含**所有**NativeScript 平台 TypeScript 声明,或者您可以通过@nativescript/types-ios
或@nativescript/types-android
使用单独的平台类型包(两者都包含在@nativescript/types
中作为方便之举)。
iOS 和 Android 平台都在积极开发并不断发展。由于这种发展,这两个平台提供的公共 API 也在不断增加。我们也喜欢在 NativeScript 应用程序中直接使用这些公共 API。如果您使用的是 TypeScript,NativeScript 会为您提供开箱即用的原生平台 API 类型,以便您可以在应用程序代码或插件中利用原生 API。
随着原生 API 数量的增长,可在 NativeScript 中使用的 TypeScript 声明的数量也在增长。虽然声明更多类型根本不会影响运行时性能,但它可能会影响开发人员体验和构建时间,因为 IDE 中的 TypeScript 语言服务也会索引这些类型并在编译期间加载它们。
每个应用程序开发都需要所有原生 API 吗?
答案是绝对的“不”。
有很多不太常用的 API 可以安全地从类型检查中删除,并且对大多数开发没有影响。
一个很好的例子是我自己遇到的,它是 iOS 中的 App Tracking Transparency API。我正在开发的应用程序引用了诸如ATTrackingManager之类的类,并且在升级到 8.2 之前,我的 TypeScript 代码编译得很好。但是,一旦我将我的类型包更新到"@nativescript/types": "~8.2.0",
,这些 TypeScript 类型就停止工作了,并且我的编辑器(VS Code)用醒目的红色下划线报错。
我也无法再构建我的项目,因为 TypeScript 错误。
这个问题的解决方案很简单,并且应该帮助您了解您可以利用此理解赋予自己的其他用例。
您很可能已经知道它们是什么,因为您可能收到了 TypeScript 构建错误。在我的例子中,我需要在 App Tracking Transparency API 中找到一些类,包括ATTrackingManager。
搜索您的node_modules/@nativescript/types-ios
或node_modules/@nativescript/types-android
文件夹。
在我的例子中,我在一个声明文件中找到了我需要的所有 App Tracking Transparency 类型。
将一个新的引用添加到该路径到您的项目的references.d.ts
文件中。这是我完成后它的样子
ns clean
您现在知道如何在各种不同的 TypeScript 项目需求下利用 NativeScript 的强大功能。