model.js

将数据操作封装到model.js

  1. const localStorageName = 'records'
  2. const model = {
  3. fetch(){
  4. return JSON.parse(window.localStorage.getItem(localStorageName) || '[]')
  5. },
  6. save(data){
  7. window.localStorage.setItem(localStorageName, JSON.stringify(data));
  8. }
  9. }
  10. export default model

在TS中import JS文件报错
image.png
改用require

  1. const model = require('@/model.js');

但是这样读不到model里面的函数,是因为引入的是default对象
image.png
所以要改成

  1. const model = require('@/model.js').default;

也可以将default导出改成命名导出

  1. export {model}

导入时

  1. const {model} = require('@/model.js');

将JS改成TS

先将后缀改成.ts, 给只要指定类型的地方指定类型
_

声明全局类型

在src根目录新建custom.d.ts文件(只需要以d.ts结尾),d代表declaration

  1. // Record是关键字,不能使用
  2. type RecordItem = {
  3. tags: string[];
  4. type: string;
  5. notes: string;
  6. amount: number;
  7. createTime: Date;
  8. }

修改model.ts

  1. const localStorageName = 'records';
  2. const model = {
  3. fetch() {
  4. return JSON.parse(window.localStorage.getItem(localStorageName) || '[]') as RecordItem[];
  5. },
  6. save(data: RecordItem[]) {
  7. window.localStorage.setItem(localStorageName, JSON.stringify(data));
  8. },
  9. clone(data: RecordItem[] | RecordItem){
  10. return JSON.parse(JSON.stringify(data));
  11. }
  12. };
  13. export default model;

改用import引入

  1. import model from '@/model';