Open xcatliu opened 4 years ago
感谢作者大大
把这里最长的给看完了
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-namespace
namespace中的字段需要加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中的类型而不能使用自动生成的声明文件中的类型吗?
https://ts.xcatliu.com/basics/declaration-files.html