引言和ColorUI一比,原生的导航栏简直是丑的没法看,为了不破坏框架的整体风格,我决定遵从框架的设计,也自定义导航栏。既然好多个页面都要用到,就考虑一下组件吧!原生组件原生的JavaScript组件长这样:Component({ /** * 组件的属性列表 / properties: { star: { type: Number, value: 0 } }, /* * 组件的初始数据 / data: { }, /* * 组件的方法列表 / methods: { init: function () { } }, attached: function() { this.init(); }});TypeScript组件想着使用TypeScript开始写组件,写个Component发现没有提示。咦?官方的TypeScript API里没有Component方法吗?找了一圈,也没找见。打开腾讯官方的小程序仓库,发现赫然一个大issue,1月19号提的,至今未解决。很好奇提issue的老哥最后是怎么解决的,不能官方库有bug,我就不写了吧?探究看Page源码定义Page:Page({})定义Component:Component({})通过观察,发现Component与Page两者类似,想着去看看Page是怎么定义类型的,我抄过来不就得了?.d.ts这是Page的类型声明文件,第一次点进去看,这是啥呀,啥也看不懂,一脸懵逼。最开始啥也不会,新建一个wx.extend.d.ts就开始抄代码,抄着抄着我发现我学会了。/* * 微信小程序扩展类型 组件TypeScript * @author zhangxishuo /declare namespace YunzhiComponent { /* * 组件实例对象 * Data: 组件内部属性规范 / interface ComponentInstance<Data extends IAnyObject> { /* * 组件对外属性 / properties?: object | Map<string, object>; /* * 组件内部数据 / data?: Data; /* * 组件内部方法 / methods?: object; } /* * 组件构造器 */ interface ComponentConstructor { <Data extends IAnyObject = {}, T extends IAnyObject & ComponentInstance<Data> = {}> ( options: ComponentInstance<Data> & T ): void }}declare const Component : YunzhiComponent.ComponentConstructor;总结之前也不知道.d.ts,现在写了之后,发现其实也没什么,这个文件就是写TypeScript会有代码提示,编译的时候提示提示类型,其实最终的功能,和.d.ts文件没啥关系。宝剑锋自磨砺出,梅花香自苦寒来。996.ICU要数当前最火的话题了,为什么要996呢?加班了,生产力一定提升吗?写代码是一个神奇的工作,同样一个功能,一个小时是它,三个小时也是它,如果你让他加班呢?他会怎么选呢?除非必要,永远不要加班,因为他们会把工作都留到晚上。程序员为什么不去多想想,为什么我要在这里加班?记住,世界是公平的。一句话,加班不推荐。但如果生产力低,不加班怎么办呢?