• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript-声明文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在经过 TypeScript-声明 的介绍了之后我们知道可以通过 declare 来进行声明,那么在 TS 当中呢它是不推荐我们将声明的定义和使用放在同一个文件当中的,它推荐的是将声明的定义单独写到一个文件当中里面去,好了介绍了这些内容之后我们先来看看我们把声明的定义单独写到一个文件当中去,然后在使用声明的地方看看能不能使用声明的定义内容吧。

新建 test.js 假设 test.js 当中的内容是我们第三方的库的内容,test.js 主要内容如下:

let myName = 'BNTang';

function say(name, age) {
    console.log(`my name is ${name}, age is ${age}`);
}

class Person {
    name = 'BNTang';
    age = 34;

    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    say() {
        console.log(`name is ${this.name}, age is ${this.age}`);
    }
}

然后我们在 index.ts 当中直接将 myName 直接打印,发现在编译器当中是报错的,但是呢,是可以实际运行的:

通过博主在编写如上代码的时候发现,编译器是没有提示的,那么如果想让编译提示是不是就可以利用之前 TypeScript-声明 的内容来进行声明,改造一下如上的示例:

declare let myName: string;
console.log(myName);

如上的代码将声明的定义和使用都写在了同一个文件,这是不推荐的写法,那么该如何把声明的定义单独抽取到一个文件当中呢,比如现在要给 test.js 编写声明文件,那么就需要新建一个 test.d.ts 的文件:

然后在将我们的声明定义代码放入进去,在放入之前 index.ts 当中的 myName 是报错的:

放入之后就不会报错了,不报错的原因也很简单,因为 TS 默认就会去自己去当前项目中查找所有以 .ts 结尾和所有 .d.ts 结尾的文件,那么这么一找,找到了就不会报错了,如果你操作了如上的步骤之后还是报错,那么这个时候就需要修改 tsconfig.json 了:

// 告诉TS需要找哪些文件
"include": [
  "./src/**/*.ts",
  "./src/**/*.d.ts"
]

如上配置的含义代表找 src 下面的所有子目录,两颗星代表所有的子目录,包括 1\2\3\4\5 ... 级等等。

  • 声明中不能出现实现
  • 以后你要给哪个文件进行声明的定义就是新建一个文件名和原本名字一样的然后以 .d.ts 结尾的文件在其中进行定义即可

最后来完善一下博主的案例即可。

test.d.ts

declare let myName: string;

declare function say(name: string, age: number): void;

declare class Person {
    name: string;
    age: number;

    constructor(name: string, age: number);

    say(): void;
}

index.ts

console.log(myName);

say("BNTang", 18);

let person = new Person("BNTang", 18);
person.say();

测试结果


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript环境搭建环境搭建发布时间:2022-07-18
下一篇:
TypeScript类型判断typeof,instanceof,以及as断言发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap