2023年还有人不知道TypeScript变量声明?

declare声明的变量和模块后,其他地方不需要引入,就可以直接使用了

注意我们需要在配置文件下,引入声明文件

{
  "compilerOptions": {
  ...
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
  ...
}

声明一个类型

declare type Asd {
    name: string;
}

在include包含的文件范围内可以直接使用Asd这个type

declare声明一个模块

declare module '*.css';

declare module '*.less';

declare module '*.png';

这样,我们可以在ts中引入相关的文件而不报错了

declare声明一个变量

declare var jQuery: (selector: string) => any;

// 声明变量直接使用

jQuery("#box")

声明一个作用域

declare namespace API{
    interface ResponseObj {
        ...
    }
    ...
}

注意

declare 与export 不要同级使用,不然的话,声明文件就需要导入了

在声明文件中 type 与 interface 也可以不用加declare ,效果相同

type myType = string | number;

// 两者效果相同

declare type myType = string | number;

readonly用于标记一个属性是只读的,也就是不可修改的。

什么时候要用命名空间?

如果你发现自己写的功能(函数/类/接口等...)越来越多, 你想对他们进行分组管理就可以用命名空间, 下面先用"类"举例:

什么是声明文件?

声明文件就是给js代码补充类型标注. 这样在ts编译环境下就不会提示js文件”缺少类型”.

Mock模拟接口数据模拟接口数据

vue-meta

主要用于管理HMTL头部标签,同时也支持SSR。

vue-meta有以下特点:

在组件内设置 metaInfo,便可轻松实现头部标签的管理

metaInfo 的数据都是响应的,如果数据变化,头部信息会自动更新

支持 SSR

// 这里的?表示这个name属性有可能不存在

class A {
  name?: string
}
interface B {
  name?: string
}

ts 中的type关键字

type作用就是给类型起一个新名字,支持基本类型、联合类型、元祖及其它任何你

需要的手写类型,常用于\color{red}{联合类型}

type test = number; //基本类型
let num: test = 10;
type userOjb = {name:string} // 对象
type getName = ()=>string  // 函数
type data = [number,string] // 元组
type numOrFun = Second | getName  // 联合类型

type和interface的区别

1、和接口一样,用来描述对象或函数的类型

type User = {
    name: string
    age: number
};
type SetUser = (name: string, age: number)=>void;

vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入,不同在于 hooks 是函数。

点赞0
点击评论0
收藏0
浏览 46
 

还没有评论,快来发表第一个评论吧

免责声明:凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,注册用户和一般页面游览者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任(包括侵权责任、合同责任和其它责任)
*尊重作者,转载请注明出处!