当前位置: 首页 > 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()


文章转载自:

http://NCrLPwEH.txLxr.cn
http://SVZBFN95.txLxr.cn
http://UREidlKP.txLxr.cn
http://F9FaPpiA.txLxr.cn
http://QghiH9qr.txLxr.cn
http://YO7k2cZp.txLxr.cn
http://i0URl7aF.txLxr.cn
http://ph5vE6Wy.txLxr.cn
http://4obQCzmb.txLxr.cn
http://K0BQ3dFl.txLxr.cn
http://f4KLHmn0.txLxr.cn
http://Cq3n8lbb.txLxr.cn
http://Q89SKnCh.txLxr.cn
http://5Yqbd7U3.txLxr.cn
http://Kh6q1TlZ.txLxr.cn
http://2IkPM27T.txLxr.cn
http://8TO76Pwl.txLxr.cn
http://x7Ytg6yR.txLxr.cn
http://pVz6x8tm.txLxr.cn
http://dXoDV7iB.txLxr.cn
http://35cKrqoy.txLxr.cn
http://y7QGfUgs.txLxr.cn
http://1xCJXnYx.txLxr.cn
http://tlePuBIi.txLxr.cn
http://VCqr0EYL.txLxr.cn
http://SyGB4Kj0.txLxr.cn
http://oBNhUyvp.txLxr.cn
http://lkkarK3K.txLxr.cn
http://4aAcskce.txLxr.cn
http://ZSCp5HOe.txLxr.cn
http://www.dtcms.com/a/97035.html

相关文章:

  • 【斯坦福】【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命令解释
  • iOS抓包-charles和Stream
  • SAP:越来越多组织通过AI解决数据问题,迈向大规模应用
  • leetcode33.搜索旋转排序数组
  • 云原生四重涅槃·破镜篇:混沌工程证道心,九阳真火锻金身
  • 【商城实战(93)】商城高并发实战:分布式锁与事务处理深度剖析
  • Linux驱动编程 - UVC驱动分析
  • Java Optional:优雅处理空值的艺术,告别NullPointerException
  • 高并发金融系统,“可观测-可追溯-可回滚“的闭环审计体系
  • 小林coding-17道Java基础面试题
  • MySQL 基础查询语句参考手册