在 uni-app 中使用 ts 开发,请参考 Vue.js TypeScript 支持 说明。
类型定义文件由 @dcloudio/types 模块提供,安装后请注意配置 tsconfig.json 文件中的 compilerOptions > types 部分,如需其他小程序平台类型定义也可以安装,如:miniprogram-api-typings、mini-types。对于缺少或者错误的类型定义,可以自行在本地新增或修改并同时报告给官方请求更新。

注意事项

在 uni-app 中使用 ts 需要注意以下事项。

在 vue 文件的 script 节点声明 lang=”ts”

声明 lang="ts" 后,该 vue 文件 import 进来的所有 vue 组件,均需要使用 ts 编写。
示例代码
改造 uni-badge.vue

  1. <script lang="ts">
  2. // 仅展示需要修改的核心代码,完整代码请参考原来的组件。
  3. import Vue from 'vue';
  4. export default Vue.extend({
  5. props: {
  6. type: {
  7. type: String,
  8. default: 'default'
  9. },
  10. inverted: {
  11. type: Boolean,
  12. default: false
  13. },
  14. text: {
  15. type: [String, Number],
  16. default: ''
  17. },
  18. size: {
  19. type: String,
  20. default: 'normal'
  21. }
  22. },
  23. computed: {
  24. setClass(): string {
  25. const classList: string[] = ['uni-badge-' + this.type, 'uni-badge-size-' + this.size];
  26. if (this.inverted === true) {
  27. classList.push('uni-badge-inverted')
  28. }
  29. return classList.join(" ")
  30. }
  31. },
  32. methods: {
  33. onClick() {
  34. this.$emit('click')
  35. }
  36. }
  37. })
  38. </script>

在 index.vue 中引用 uni-badge 组件

  1. <script lang="ts">
  2. import Vue from 'vue';
  3. import uniBadge from '../../components/uni-badge.vue';
  4. export default Vue.extend({
  5. data() {
  6. return {
  7. title: 'Hello'
  8. }
  9. },
  10. components:{
  11. uniBadge
  12. }
  13. });
  14. </script>