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 相关文章推荐
ajax请求get与post的区别总结
Nov 04 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
Aug 20 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
vue深入解析之render function code详解
Jul 18 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
vuex进阶知识点巩固
May 20 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
微信小程序实现单列下拉菜单效果
Apr 25 Javascript
基于JavaScript实现简单扫雷游戏
Jan 02 Javascript
一起来看看Vue的核心原理剖析
Mar 24 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
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
大学班长的职责
2014/01/27 职场文书
化妆品店促销方案
2014/02/24 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
python双向链表实例详解
2022/05/25 Python