栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NativeScript:增强tns平台声明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NativeScript:增强tns平台声明

最终,我根本不赞成

tns-platform-declarations
,因为性能非常糟糕(特别是如果您的开发机中的RAM小于等于8GB)。

我的解决方案是定义一个自己的

my-typings.d.ts
文件(例如,在项目根目录中),在其中定义扩展类型
RecyclerView
。随着tsconfig.json违约应该自动被追上了tsc。否则可以添加
exclude/include
或files表达式。

然后,您可以放置​​一个

/// <reference path="path/to/RecyclerView/file.d.ts" />内部,以便ambient global namespaceTypescript
编译器可以找到以下内容。

declare namespace android {  namespace view {    namespace ViewGroup {      namespace LayoutParams {        const MATCH_PARENT;        const WRAP_CONTENT;      }    }    class ViewGroup {    }  }  namespace support.v7.widget {    namespace RecyclerView {      type AdapterImpl = {        onCreateViewHolder(parent: android.view.ViewGroup, viewType: number): ViewHolder;        onBindViewHolder(holder: android.support.v7.widget.RecyclerView.ViewHolder, position: number): void;        getItemCount(): number      };      class Adapter {        static extend(AdapterImpl): { new () }      }      class LayoutParams {        constructor(width: any, height: any);      }      class ViewHolder {        static extend: any;      }    }    class RecyclerView {      constructor(context: any);      setAdapter(Adapter): void;      setLayoutManager(LinearLayoutManager): void;    }    class LinearLayoutManager {      constructor(context: any);    }  }}

基本上,名称空间可用于模拟嵌套的对象属性(例如android.view.xxx)。如果内部类是用Java定义的(Typescript似乎禁止嵌套class语句),这也是这种方式。

在实际使用类型的情况下,我还必须定义一个与名称空间同名的类android.view.ViewGroup。否则你会得到错误

没有出口会员xxx

,即使使用显式声明了类类型export(也没有必要,因为已经全局声明了名称空间)。

对于使用扩展本机Java类型的特殊情况extend,我为相关类定义了一个静态方法,例如

static extend(AdapterImpl): { new () }
,其返回类型可以使用实例化new。

希望对其他类似问题有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/367515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号