声明文件
xcatliu opened this issue · 22 comments
感谢作者大大
把这里最长的给看完了
感谢作者
namespace中的字段需要加export才能被外面访问到吧?例子中没有加,请问是不是错误呢?
没看懂。。二刷
@tomwang1013
namespace中的字段需要加export才能被外面访问到吧?例子中没有加,请问是不是错误呢?
文中的所有代码都是经过了验证的,可以把仓库 clone 下来在 vscode 中看看
https://github.com/xcatliu/typescript-tutorial/tree/master/examples/declaration-files/17-export-namespace
namespace中的字段需要加export才能被外面访问到吧?
你可能是在写 ts 模块,而不是在写 .d.ts 声明文件。
@tomwang1013
namespace中的字段需要加export才能被外面访问到吧?例子中没有加,请问是不是错误呢?文中的所有代码都是经过了验证的,可以把仓库 clone 下来在 vscode 中看看
https://github.com/xcatliu/typescript-tutorial/tree/master/examples/declaration-files/17-export-namespacenamespace中的字段需要加export才能被外面访问到吧?
你可能是在写 ts 模块,而不是在写
.d.ts声明文件。
首先谢谢回复!难道声明文件中的namespace和模块中的namespace还不一样?
首先谢谢回复!难道声明文件中的namespace和模块中的namespace还不一样?
@tomwang1013 根据我的亲测,确实如此
关于全局变量声明和npm声明有个问题:你提到typescript会自动扫描项目中所有的.ts和.d.ts文件,文件中的declare声明会变成全局变量声明。这样如果你的npm文件也在工程源码中(即自己写的或为第三方写的声明),那里面的declare也会变成全局的了,不用export也能用了。那这句话:
在 npm 包的声明文件中,使用 declare 不再会声明一个全局变量,而只会在当前文件中声明一个局部变量
岂不是有矛盾?
@tomwang1013 准确来说,只要 .ts 或 .d.ts 文件中有 import 或 export,那么这个文件中的 declare 就会变成局部变量。
@tomwang1013 准确来说,只要
.ts或.d.ts文件中有import或export,那么这个文件中的declare就会变成局部变量。
了解,那反之就会变成全局变量?
export namespace已经不推荐使用了:
https://www.typescriptlang.org/docs/handbook/modules.html#red-flags
@lcfzblcfzb
没看懂。。二刷
感觉这段可以跳过了 不是开发看的 是从设计的角度来梳理的
import { name, getName, Animal, Directions, Options } from 'foo'; 在这个案例中,我按照教程的目录结构,以及拷贝相同代码,还有tsconfig.json ,结果运行报错: Error: Cannot find module 'foo'
优秀,学习了
看了很多便, 比官网清晰。 赞
当我们import一个npm包时,在本地新建一个types目录存放它的声明文件,你提到需要配置paths:
"paths": {
"*": ["types/*"]
}
但是paths我理解是用来做模块本身的查找的而不是模块的声明文件的查找,这是特殊规则吗?如果有官方文档提到这个可以贴一下吗?谢谢!
请问自动生成的声明文件(保持了目录层级)和整个npm包导出的声明文件(index.d.ts或types字段指示的文件)有啥区别呢?使用者只能使用(通过import)index.d.ts中的类型而不能使用自动生成的声明文件中的类型吗?
干货
test