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对话框使用方法(警告框 javascript确认框 提示框)
Jan 07 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
使用Javascript简单实现图片无缝滚动
Dec 05 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
深入理解ES7的async/await的用法
Sep 09 Javascript
AngularJS的$location使用方法详解
Oct 19 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 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编写注册后Email激活验证的实例代码
2013/03/11 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
Jquery 扩展方法
2010/05/06 Javascript
JavaScript类库D
2010/10/24 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
岗位竞聘书范文
2014/03/31 职场文书
美术指导助理求职信
2014/04/20 职场文书
工地质量标语
2014/06/12 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏