【问题标题】:TypeScript, declare a variable vs. declare a moduleTypeScript,声明变量与声明模块
【发布时间】:2015-10-14 23:42:56
【问题描述】:

TL;DR

在 typescript 中声明变量是什么意思?例如(来自 TypeScript 手册或 wiki):

声明 var d3: D3.Base;

这种情况的目的是什么?

更多想法:

我明白声明一个模块或命名空间表明它是环境的,即它没有编译成 JavaScript,仅用于描述对象的形状(类型检查)。但是,变量声明的目的使我难以理解。

问题出现在我查看绝对类型(angular.d.ts)的角度声明文件时:

declare var angular: angular.IAngularStatic;

// Support for painless dependency injection
interface Function {
    $inject?: string[];
}

// Collapse angular into ng
import ng = angular;
// Support AMD require
declare module 'angular' {
    export = angular;
}

///////////////////////////////////////////////////////////////////////////////
// ng module (angular.js)
///////////////////////////////////////////////////////////////////////////////
declare module angular {......module declaration continues....

我正在努力弄清楚“导入”和变量声明到底发生了什么。 Visual Studio Code 似乎不喜欢导入,但 Visual Studio 2015 接受它(两者都使用 TypeScript 1.6.2)。

【问题讨论】:

    标签: typescript typescript1.6


    【解决方案1】:

    这种情况的目的是什么

    环境声明。主要是为了支持不是用 TypeScript 编写的库(以及像 window 这样的环境变量)。

    更多:https://basarat.gitbooks.io/typescript/content/docs/types/ambient/intro.html

    然而,变量声明的目的却让我难以理解。

    一些库提供了一个全局变量。例如。 $ 来自 jquery。

    这里讨论了这个主题:https://basarat.gitbooks.io/typescript/content/docs/types/ambient/variables.html

    我正在努力弄清楚“导入”和变量声明到底发生了什么

    import 可用于复制类型(此处为declare module angular)。

    这在此处的tips 部分中有介绍:https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html

    【讨论】:

    • 感谢您提供图书的链接。我一定会看看的。有趣的是,我正在阅读语言规范并在那里找到了 jquery 和 Window 示例:link 是否应该以这种方式使用“import”?为什么你认为 Visual Studio Code 不支持它的使用?错误?
    • Why do you think Visual Studio Code isn't supporting its usage? Bug? 我尽量不把业余时间花在非 OSS 项目上……谁知道呢:)
    • TypeScript 语言规范中“导入”部分的用法吗?我正在尝试确定是否也应该使用该语法。
    • Is that usage of "import" part of the TypeScript language spec? 用于将foo.bar.bas 之类的内容折叠成bas,例如import bas = foo.bar.bas
    • Visual Studio Code 现在是 OSS,耶!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2021-11-04
    • 1970-01-01
    • 2022-01-15
    • 2019-01-04
    相关资源
    最近更新 更多