现代前端项目中如何使用全局类型?

比如我在Home.vue组件里要使用全局变量isDev与全局方法log()

<template>...</template>
import { Options, Vue } from 'vue-class-component'

@Options({})
export default class Home extends Vue {
  created() {
    console.log(isDev)
    log('Home', 'test', 123)
  }
}
</script>

然后又在根目录的global.d.ts(其中无import、export)里声明


// Api返回结果
declare interface Result<T = unknown> {
  code: 200 | 401 | 404 | 500 | 501 | 502 | number | any
  msg: string
  data: T
}

// 日志记录
declare function log(tag: string, ...args: any[]): void

//
declare const isDev: boolean

//
declare const printLog: boolean

interface Window {
  isDev: boolean
  printLog: boolean
  log(tag: string, ...args: any[]): void
}

interface globalThis {
  isDev: boolean
  printLog: boolean
  log(tag: string, ...args: any[]): void
}

它却报错

14:17  error  'isDev' is not defined  no-undef
15:5   error  'log' is not defined    no-undef

但是我在其他ts文件中可以直接使用

阅读 1.8k
2 个回答

在文件中写入

interface Window {
    isDev: boolean
    log(tag: string, ...args: any[]): void
}

看你代码只是在声明的文件里面定义了,这个文件一般是给编译器或者编辑器看的,实际上它不是真正存在的变量;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题