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购物车实时结算特效实现思路
Sep 23 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
Oct 12 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
Bootstrap3学习笔记(二)之排版
May 20 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
一百多行代码实现react拖拽hooks
Mar 23 Javascript
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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
php HandlerSocket的使用
2011/05/02 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
python中的字典详细介绍
2014/09/18 Python
Python操作Excel之xlsx文件
2017/03/24 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
10个示例带你掌握python中的元组
2020/11/23 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
大众服装店创业计划书范文
2014/01/01 职场文书
中年人生感言
2014/02/04 职场文书
房产委托公证书
2014/04/08 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
委托书范本
2014/09/13 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
导游词之包公祠
2019/11/25 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL