用ts接第三方h5sdk时,简单书写第三方sdk的(.d.ts)声明文件

本文介绍了 TypeScript 中声明文件(.d.ts)的作用,主要用于为 JavaScript 库提供类型定义,以实现代码编辑时的智能提示。在使用第三方 SDK 时,如果缺少 .d.ts 文件,开发者需要自行创建。声明文件可以包含变量、函数、类和接口的声明。文中给出了创建 .d.ts 文件的步骤,并展示了对接第三方 QuickH5SDK 的声明文件示例,包括登录、支付等接口的定义。
摘要由CSDN通过智能技术生成

1.我们在用ts开发项目时,什么时候我们需要自己写(.d.ts)声明文件:

(1).d.ts文件是什么:可以这么说,它是js代码的声明文件,比如我们用js写了一个类,然后我们用这个类,但是js里的变量没有智能提示,但是ts的代码就会智能提示,这个时候,我们就给我们的js文件再写一个.d.ts结尾的文件,里面是对我们js文件里类的声明,这个时候,我们在访问这个类时,就会有智能提示了

.d.ts文件只是个声明文件,它不会被编译进你的代码里,发布代码的时候只会把你的原js代码编译进去

它就是在我们用ts项目中,用于在书写代码时,智能提示用的

(2)你在用ts开发项目时,你会发现,如果你用了框架,比如vue,jquery,creator等等,一般这些框架的原代码是放在libs这么个文件夹,里面就包含原代码的js文件和.d.ts文件,.d.ts文件就是js文件的声明,给我们写ts项目时,智能提示用的

(3)我们一般都不用自己书写.d.ts文件,我现在遇到的,就是我在接入第三方h5的sdk时,因为第三方给我的是一个js文件,没给我.d.ts文件,我在我的ts项目里如果直接写js里的变量名会出错,虽然ts中有方法让他不出错,比如我们要访问一个js里的变量,通过这杨访问,window['变量名'],这样ts就不会进行类型检查,就不会报错,但是最好的,就是我们写个声明文件,产生智能提示,让ts帮助我们写代码,也对项目维护好一点,别的同事接收项目也看的清楚一点

后面我觉得,第三方的sdk公司,就应该连同js和.d.ts给到我们,我觉得会往这方面发展的

2.我们怎么来写:

(1)首先我们新建文件,命名随便,以.d.ts结尾

(2)比如第三方库中有一个全局变量给我们使用,我们这么声明

declare var foo: number;

//var let const都可以

(3)全局函数

declare function greet(greeting: string): void;

(4)带属性的对象

declare namespace myLib {

function makeGreeting(s: string): string;

let numberOfGreetings: number;

}

(5)类

declare class Greeter {

constructor(greeting: string);

greeting: string;

showGreeting(): void;

}

(6)我们还可以在声明文件里写接口,比如我们收到第三方的某个数据,这个数据可以定义一个接口

interface AlertOptions {

modal: boolean;

title?: string;

color?: string;

}

一般第三方sdk都会有一个全局的变量,我们要使用的,都在这个变量下面,这个时候,我们只需用到第(4)种,带属性的对象,使用namespace,对于接口,我们可以写在namespace外面,也可以写在namespace里面,建议写在里面,这杨我们就通过namespace.接口名来访问接口,防止接口与我们自己项目中的接口冲突,因为这个接口写在这个命名空间下面

3.下面是我接quickH5sdk写的.d.ts声明文件:

/**quick h5 sdk */
declare namespace QuickSDK{
    /**登录返回参数中data数据接口 */
    interface LoginDataObjIF{
        /**渠道uid */
        uid:string;
        /**渠道username */
        username:string;
        /**token 游戏服务器需通过v2/checkUserInfo接口(参见服务器接口文档)验证token和UID的正确性 */
        token:string;
        /**是否游客,登录后此值为true */
        isLogin:boolean;
        /**渠道ID */
        channelId:string;
    }
    /**登录返回参数接口 */
    interface LoginData{
        /**是否登录成功,true成功,false失败 */
        status:boolean;
        data:LoginDataObjIF;
        /**status为false时,此字段为Failed表示登录失败,为cancel表示玩家取消登录 */
        message:string;
    }
    /**初始化 */
    function init(productCode:string,productKey:string,b:boolean,func:Function):void;
    /**登录 */
    function login(func:(callbackData:LoginData)=>void):void;
    /**一些渠道(如:百度 天宇游等)在悬浮框有切换账号的功能,此回调即切换成功后的回调。游戏应清除当前的游戏角色信息。在切换账号成功后回到选择服务器界面,用回调结果里面的新的UID 和Token 进入游戏。注意:在此回调内无需调用登录接口 */
    function setSwitchAccountNotification(func:(callbackData:LoginData)=>void):void;
    /**支付接口
     ** 注:选传的字段值可以为空,但是对象必须包含此属性.
     */
    interface PayIF{
        /**必传 QuickSDK后台自动分配的参数 */
        productCode:string;
        /**必传 渠道UID */
        uid:string;
        /**必传 渠道username */
        username:string;
        /**必传 游戏内角色ID */
        userRoleId:string;
        /**必传 游戏角色 */
        userRoleName:string;
        /**必传 角色所在区服ID */
        serverId:number;
        /**必传 角色所在区服 */
        userServer:string;
        /**必传 角色等级 */
        userLevel:number;
        /**必传 游戏内的订单,服务器通知中会回传 */
        cpOrderNo:string;
        /**必传 购买金额(元) */
        amount:string;
        /**必传 购买商品个数 */
        count:number;
        /**必传 购买商品单位,如,个 */
        quantifier:string;
        /**必传 道具名称 */
        subject:string;
        /**必传 道具描述 */
        desc:string;
        /**选传 服务器通知地址 */
        callbackUrl:string;
        /**选传 透传参数,服务器通知中原样回传 */
        extrasParams:string;
        /**必传 商品ID */
        goodsId:string;
    }
    /**支付 */
    function pay(orderInfoJson:string,func:(payStatusObject:any)=>void):void;
    /**上传角色信息接口 */
    interface Role{
        isCreateRole:boolean;
        roleCreateTime:string;
        uid:string;
        username:string;
        serverId:number;
        serverName:string;
        userRoleId:string;
        userRoleName:string;
        userRoleBalance:number;
        vipLevel:number;
        userRoleLevel:number;
        partyId:number;
        partyName:string;
        gameRoleGender:string;
        gameRolePower:number;
        partyRoleId:number;
        partyRoleName:string;
        professionId:string;
        profession:string;
        friendlist:string;
    }
    /**上传角色信息 */
    function uploadGameRoleInfo(roleInfoJson:string,func:(response:any)=>void):void;
    /**登出 */
    function logout(func:(logoutObject:any)=>void):void;
    /**设置登出成功监听器 */
    function setLogoutNotification(func:(logoutObject:any)=>void):void;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值