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 相关文章推荐
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
理解 JavaScript 预解析
Oct 25 Javascript
jquery 如何动态添加、删除class样式方法介绍
Nov 07 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
Aug 05 Javascript
leaflet的开发入门教程
Nov 17 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
在vue中通过axios异步使用echarts的方法
Jan 13 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 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
Laravel多域名下字段验证的方法
2019/04/04 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
Javascript 解疑
2009/11/11 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
vue-cli常用设置总结
2018/02/24 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
layui原生表单验证的实例
2019/09/09 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
2014年会演讲稿范文
2014/01/06 职场文书
小学教师师德反思
2014/02/03 职场文书
运动会广播稿100字
2014/09/14 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL