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 相关文章推荐
JavaScript 快捷键设置实现代码
Mar 13 Javascript
由document.body和document.documentElement想到的
Apr 13 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
Sep 11 Javascript
Span元素的width属性无效果原因及解决方案
Jan 15 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
JavaScript数组排序小程序实现解析
Jan 13 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 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
PHP的宝库目录--PEAR
2006/10/09 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Django中信号signals的简单使用方法
2019/07/04 Python
python实现桌面托盘气泡提示
2019/07/29 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
节能环保标语
2014/06/12 职场文书
创先争优标语
2014/06/27 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
2015年大学生实习评语
2015/03/25 职场文书
最感人的道歉情书
2015/05/12 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript