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 是函数。
还没有评论,快来发表第一个评论吧