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 相关文章推荐
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
Javascript中arguments和arguments.callee的区别浅析
Apr 24 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
AngularJS 过滤器(自带和自建)详解
Sep 19 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
vue里面使用mui的弹出日期选择插件实例
Sep 16 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 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实现把数字ID转字母ID
2013/08/12 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
python基础教程之字典操作详解
2014/03/25 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
Python SQLite3简介
2018/02/22 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
python实现年会抽奖程序
2019/01/22 Python
Python判断telnet通不通的实例
2019/01/26 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
六一活动主持词
2015/06/30 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android
python使用BeautifulSoup 解析HTML
2022/04/24 Python