为什么import关键字有用
Why is the import keyword useful?
在typescript中,我可以导入另一个模块''命名空间,如下所示:
namespace Shapes2 {
import shapes = Shapes;
var bar = new shapes.Bar();
}
然而,我可以很容易地直接引用命名空间。
namespace Shapes3{
var shapes = Shapes;
var bar = new shapes.Bar();
}
import
做了什么有用的事情吗?
我想什么时候键入import
而不是var
?
在这种特定情况下,不,它没有做任何有用的事情。该语法用于为命名空间创建别名。你的例子在这种情况下会更有用:
namespace Shapes2 {
import Rects = Shapes.Rectangles;
var bar = new Rects.Red();
// Instead of `var bar = new Shapes.Rectangles.Red()`
}
基本上,这只是一种减少打字量的方法。在某种程度上,它是C#中using
的替代品。但这与var
有何不同?
这类似于使用
var
,但也适用于导入符号的类型和名称空间含义。重要的是,对于值,import
是与原始符号不同的引用,因此对别名var
的更改不会反映在原始变量中。
源
这方面的一个很好的例子可以在规范中找到:
namespace A {
export interface X { s: string }
}
namespace B {
var A = 1;
import Y = A;
}
"Y"是未实例化命名空间"a"的本地别名。如果"A"的声明被更改,使得"A"成为实例化的命名空间,例如通过在"A"中包含变量声明,则上面"B"中的import语句将是错误的,因为表达式"A"没有引用命名空间"A"。
当导入语句包含导出修饰符时,将导出本地别名的所有含义。
来自TypeScript手册
另一种可以简化命名空间操作的方法是使用import q=x.y.z为常用对象创建较短的名称。不要与用于加载模块的import x=require("name")语法混淆,此语法只是为指定的符号创建一个别名。您可以将这些类型的导入(通常称为别名)用于任何类型的标识符,包括通过模块导入创建的对象。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- delete关键字在全局变量上的不同行为
- 门户网站:当地时间有多有用
- JavaScript 中的嵌套函数和 “this” 关键字
- 如何在不使用 new 关键字的情况下从函数创建对象
- Angularjs使用“;这个“;promise内的关键字回调
- 重写需要javascript中带有import关键字的语法
- 使用ScriptObjectMirror将数组结果从JavaScript转换为有用的东西
- Regex,用于从字符串中筛选关键字
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 可以在Javascript中添加新的关键字吗
- Javascript中的模块模式和揭示模块模式是否仅在创建API时有用;s
- javascript中的这个关键字
- Javascript关键字搜索子类Div值
- 在对象中用Javascript编写此关键字
- 带有CSS的数据属性就没那么有用了
- 在构建字典时,作为关键字的变量会自动变为字符串
- 正则表达式,从一组关键字中获取奇数
- 为什么import关键字有用