当前位置: 首页 > news >正文

前端 - ts - - declare声明类型

 在使用typeScript的项目中 需要声明属性类型 单独的局部属性 可以直接在当前文件中声明 全局属性需要在项目根目录下新建.d.ts文件 vite会自动识别.d.ts类型文件

在该文件中使用declare声明类型有三种写法

1、在某种类型的文件中声明

2、声明window上的属性类型

3、全局声明

一、在某种类型文件中声明

以下代码是告诉ts 每个.vue文件是合法模块 默认到处一个vue组件 避免impot导入某个组件时 ts认为当前组件是未定义的模块(vue3+ts的基石)

// 在某种类型的文件中声明
declare module '*.vue' {
  import type { DefineComponent } from 'vue';
  // 完整写法
  const component: DefineComponent<
    {
      msg: string;       // 定义 props 类型
      count?: number;    // 可选 prop
    },
    {},                  // 不定义 data
    any,                 // 不限制方法上下文
    {},                  // 不定义 computed
    {
      onClick(): void;   // 定义 emits 类型
    }
  >;
  //精简写法
  const component: DefineComponent<{},any,{}>
  export default component;
}

二、声明window上的属性

用于当项目中引入的第三方库或cdn的sdk 属性会挂载到window上 严格明确作用于window对象. 适用于浏览器环境

// index.html 通过script引入第三方库
<script src='xxx'></script>

// .d.ts
declare global {
 interface window{
    xxx:any
  }
}

//index.vue 使用
window.xxx

三、全局声明

也会适用于通过script引入第三方库 顾名思义 任何环境都会声明(浏览器环境、node环境等)没有那么严格 

// .d.ts
// 变量简易写法
declare const xxx:any
// 方法完整写法
declare const xxx: {
  // options代表传参 可以不为any类型 具体类型根据情况自己定义
  new (options:any): {
    // 回调函数:(参数)=> 返回值
    fn1:()=>void
    fn2:(val:any)=> number
  }
}

// index.vue 直接使用或new一个新对象
const myObj = xxx
const newObj = new xxx()

相关文章:

  • 【斯坦福】【ICLR】RAPTOR:基于树结构的检索增强技术详解
  • RHCE 第一次作业 25-3-28
  • 火山dts迁移工具使用
  • linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像
  • Android OTA升级中SettingsProvider数据库升级的深度解析与完美解决方案
  • Android R adb remount 调用流程
  • okhttp3网络请求
  • 【Apache Hive】
  • springboot3 整合 Log4j2
  • python3面试题(元类、内存管理、函数)
  • Maven工具学习使用(六)——聚合与继承
  • 24、web前端开发之CSS3(一)
  • java对pdf文件分页拆分
  • 第十四届MathorCup高校数学建模挑战赛-C题:基于 LSTM-ARIMA 和整数规划的货量预测与人员排班模型
  • 股指期货的连续主力合约能不能代表这个股指期货?
  • 人体细粒度分割sapiens 实战笔记
  • 数据设计(范式、步骤)
  • kubernetes》》k8s》》 kubeadm、kubectl、kubelet
  • Spring 约定编程案例与示例
  • uv 命令用conda命令解释
  • 女排奥运冠军宋妮娜:青少年保持身心健康才能走得更远
  • 泽连斯基:俄代表团级别低,没人能做决定
  • 消息人士称俄方反对美国代表参加俄乌直接会谈
  • 张国清将赴俄罗斯举行中俄“长江—伏尔加河”地方合作理事会第五次会议和“东北—远东”政府间合作委员会双方主席会晤
  • 人形机器人灵犀X2掌握新技能:有了“内心戏”,还会拳脚功夫
  • 混乱的5天:俄乌和谈如何从充满希望走向“卡壳”