开始 Typescript

初始化项目

当前按照 vue-cli3 的方式初始化 Ts 项目,并引入了一些插件。

Could not find a declaration file for module 'module-name'

TsLint 报错,因为 TsLint 要求三方库中必须含有 index.d.ts 文件。 解决方案:

三方支持

npm install -D @types/module-name

切换引入方式

const yourModuleName = require('module-name');

自己动手,改变包类型

// 新建 module.d.ts
declare module 'vue-awesome-swiper';
// 之后再引入包就不报错了

TIP

https://stackoverflow.com/questions/41292559/could-not-find-a-declaration-file-for-module-module-name-path-to-module-nam?r=SearchResults

Promise 类型

return new Promise<any[]>

vue 引入图片

// 在 js 中引入图片,在 promise 中返回
Expected property shorthand in object literal
resolve([{
      author: '李利民',
      datetime: '2018 01-01',
      avatar, // 注意这里的写法
      where: '吉林省泗水村',
    }]);
  });

类型

// 可选参数
interface Config {
  color?: string;
  width?: number;
}
// 确保有值
@Prop() private avatar!: string;

使用 props

watch

使用 beforeRouteEnter

import { Component, Vue } from 'vue-property-decorator';

Component.registerHooks([
    'beforeRouteEnter',
    'beforeRouteLeave',
    'beforeRouteUpdate', // for vue-router 2.2+
  ]);
  
private beforeRouteEnter

Property 'files' does not exist on type 'EventTarget'

https://stackoverflow.com/questions/43176560/property-files-does-not-exist-on-type-eventtarget-error-in-typescript