typescript编写微信小程序创建项目的方法


Posted in Javascript onJanuary 29, 2021

创建项目

在微信开发者工具创建项目,在语言中选择 TypeScript

改造项目

编辑 package.json 文件,修改 miniprogram-api-typingstypescript 版本

{
 "name": "miniprogram-ts-quickstart",
 "version": "1.0.0",
 "description": "",
 "scripts": {
 "compile": "./node_modules/typescript/bin/tsc",
 "tsc": "node ./node_modules/typescript/lib/tsc.js"
 },
 "keywords": [],
 "author": "",
 "license": "",
 "dependencies": {
 },
 "devDependencies": {
 "typescript": "^4.1.3",
 "miniprogram-api-typings": "^2.12.1-beta.0"
 }
}

编辑 tsconfig.json 文件, 修改 lib 为 ["esnext"],支持最新语法, 删除 typeRoots 配置项

{
 "compilerOptions": {
 "strictNullChecks": true,
 "noImplicitAny": true,
 "module": "CommonJS",
 "target": "ES5",
 "allowJs": false,
 "experimentalDecorators": true,
 "noImplicitThis": true,
 "noImplicitReturns": true,
 "alwaysStrict": true,
 "inlineSourceMap": true,
 "inlineSources": true,
 "noFallthroughCasesInSwitch": true,
 "noUnusedLocals": true,
 "noUnusedParameters": true,
 "strict": true,
 "removeComments": true,
 "pretty": true,
 "strictPropertyInitialization": true,
 "lib": ["esnext"]
 },
 "include": [
 "./**/*.ts"
 ],
 "exclude": [
 "node_modules"
 ]
}

执行 npm install

删除项目下 typings 目录, 的 复制 node_modules 下 miniprogram-api-typings 的 types 文件到项目根目录

在 miniprogram 下创建 interface 目录并创建 IAppOption.ts 文件,最后编辑 app.ts 文件,

// IAppOption.ts
export default interface IAppOption {
 globalData: {
  text: string;
 }
}
// app.ts
import IAppOption from "./interface/IAppOption";

App<IAppOption>({
 globalData: {
  text: "Hello,Word!"
 },
 onLaunch() {
 }
})

在 详细 -> 本地设置 -> 调试基础库,直接选择最新的

使用 Promise 化的微信小程序api

以前可以通过 miniprogram-api-promise 这个包来完成 api Promise 化,或者自己写

现在可以直接使用,比如 wx.getStorageInfo ,在 lib.wx.api.d.ts 中返回了 PromisifySuccessResult

PromisifySuccessResult 返回了Promise

getStorageInfo<TOption extends GetStorageInfoOption>(
option?: TOption
): PromisifySuccessResult<TOption, GetStorageInfoOption>

type PromisifySuccessResult<
P,
 T extends AsyncMethodOptionLike
> = P extends { success: any }
 ? void
 : P extends { fail: any }
 ? void
 : P extends { complete: any }
 ? void
 : Promise<Parameters<Exclude<T['success'], undefined>>[0]>

两种用法,大多数api都支持

wx.getStorageInfo({
 success: () => {
  console.log('成功执行')
 },
 fail: () => {
  console.log('失败执行')
 },
 complete: () => {
  console.log('接口调用结束')
 }
})
wx.getStorageInfo().then(() => {
 console.log('成功执行')
}).catch(() => {
 console.log('失败执行')
}).finally(() => {
 console.log('接口调用结束')
})

源码: https://github.com/NikolasSky/ts-miniprogram/tree/master/ts-miniprogram-base

到此这篇关于typescript编写微信小程序创建项目的方法的文章就介绍到这了,更多相关typescript开发微信小程序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
jquery实现效果比较好的table选中行颜色
Mar 25 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
详解vue项目中调用百度地图API使用方法
Apr 25 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
js实现碰撞检测
Jan 29 #Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 #jQuery
vue穿梭框实现上下移动
Jan 29 #Vue.js
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 #Javascript
vue使用transition组件动画效果的实例代码
Jan 28 #Vue.js
Bootstrap FileInput实现图片上传功能
Jan 28 #Javascript
js实现简单的倒计时
Jan 28 #Javascript
You might like
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
Python中zfill()方法的使用教程
2015/05/20 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Python的条件锁与事件共享详解
2019/09/12 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
护士自我鉴定
2013/10/23 职场文书
个人优缺点自我评价
2014/01/27 职场文书
《灯光》教学反思
2014/02/08 职场文书
党员党性分析材料
2014/02/17 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js