Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeScript:有没有办法去掉“导入”?

TypeScript:有没有办法去掉“导入”?
EN

Stack Overflow用户
提问于 2015-12-10 11:23:49
回答 1查看 193关注 0票数 2

我是一个TypeScript初学者,我正在用TypeScript + Angular 1做一些项目。

到目前为止,我已经定义了一些服务,每个服务都具有以下结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/// <reference path="../App.ts"/>


module SomeModule {

export class SomeService {
    constructor(...) {
    ...
    }
}

var app = AppModule.getModule();
app.service("SomeService", SomeService);
}

我的App.ts在哪里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module AppModule{
  'use strict';
   angular.module('SomeApp', [...]);

   export var getModule:() => ng.IModule = () => {
    return angular.module('SomeApp');
   };
}

当我尝试引用具有不同模块名称的服务时,我需要包括:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import SomeService = SomeModule.SomeService;

我的问题是:有没有办法省略这些导入?或者将它们存储在一个文件中,这样我以后只能引用一个文件,而不是引用所有具有不同模块的服务?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 11:58:54

你的代码有几处地方有问题。第一个是你应该只使用<references>注释,引用类型定义文件*.d.ts,而不是实际的源文件*.ts

第二个问题是你混合了内部和外部模块以及you should never do that

因此您可以使用namespace关键字来使用内部模块。尽量避免使用module关键字,因为它是` `namespace的旧版本。下面是一个基本的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// some_module.ts
namespace AppModule.SomeModule {

    export class SomeService {
        constructor() {
         // ...
        }
    }
}

// app.ts
namespace AppModule {
   angular.module('SomeApp', []);

   export function getModule() {
       return angular.module('SomeApp');
   }
}

var app = AppModule.getModule();
app.service("SomeService", AppModule.SomeModule.SomeService);

对于外部模块,相同的代码将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// some_module.ts
class SomeService {
    constructor() {
        // ...
    }
}
export default SomeService;

// app.ts
angular.module('SomeApp', []);

function getModule() {
    return angular.module('SomeApp');
}
export default getModule;


// main.ts
import getModule from "./app";
import SomeService from "./some_module";

var app = getModule();
app.service("SomeService", SomeService);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34200652

复制
相关文章
TypeScript 模块导入那些事
两者大部分是等价的,但 ES6 规范对 import * as 创建出的模块对象有一点限制。 根据该规范,该模块对象不可被调用,也不可被实例化,它只具有属性。
三毛
2018/08/30
2K0
TypeScript 仅仅导入声明语法
在 TypeScript 中,如果导入的模块没有用于任何表达式,TypeScript 将会删除该模块导入。
三毛
2020/01/20
1.8K0
Typescript 内置的模块导入兼容方式
前端的模块化规范包括 commonJS、AMD、CMD 和 ES6。其中 AMD 和 CMD 可以说是过渡期的产物,目前较为常见的是commonJS 和 ES6。在 TS 中这两种模块化方案的混用,往往会出现一些意想不到的问题。
Dickensl
2022/06/14
1.5K0
不想装系统,有没有办法在线体验 Linux?
另外,这次分享还有承上启下的作用。承上是前几天挺受大家欢迎的《Android 手机如何改造成 Linux 服务器?》,启下是想预告:从明天开始,我会在每次发文的次条加入“轻松掌握Linux命令”系列,希望从基础的命令开始,提升 Linux 技术水平,敬请期待!
Python猫
2019/11/12
4.8K0
phpcms内容页只显示日期,去掉发布时间办法
我们知道,默认的标签{$inputtime}用在内容页时显示的格式为类似 2015-10-21 18:03:28这样的,这样的显示效果对采集的站形像影响很不好,因为采集发布的网站的时间是相继很近的,别人一看就知道是采集网站。
李维亮
2021/07/09
2.1K0
问答 | 有没有什么办法让GPU显存不会溢出?
社长为你推荐来自 AI 研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。 话不多说,直接上题 问:有没有什么办法让GPU显存不会溢出? 来自社友的回答 ▼▼▼ @巴特莱•芬克: 通过谷歌大部分找到的就是 GPU 显存溢出。然后 加上 CUDA_VISIBLE_DEVICES=1 Environment Variable Syntax Results CUDA_VISIBLE_DEVICES=1 Onl
AI研习社
2018/09/25
1.2K0
从Oracle批量导出CSV导入到HIVE中(含去掉引号)
以往很多系统经常用的是oracle数据库,在大数据环境下,许多应用都是去IOE的,那么其中老旧数据的迁移或者测试就是其中一块。
sparkexpert
2022/05/07
1.3K0
从Oracle批量导出CSV导入到HIVE中(含去掉引号)
Android Studio 3.1无法导入模块的解决办法
3月份Android Studio 3.1版正式发布,谁知新版本搞出了新问题,譬如导入已有的模块,Android Studio就死活无法正常导入。摸索了很久,才算总结出模块导入的几点解决办法: 一、依次选择菜单“File”——“New”——“Import Module”,按提示导入具体的demo。此时Android Studio 3.1毫无反应,既不重编也不在左侧列表添加新模块。此时要打开项目的settings.gradle,把下面这行:
aqi00
2019/01/18
2.7K0
Android Studio导入项目非常慢的解决办法
问题     Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势。然而在实际使用时,依然有不少不爽的地方。Android Studio原生支持使用Gradle来构建项目本是个不错的想法,使用动态语言Groovy定义项目构建过程,避免了build.xml文件的繁琐定义。但是Gradle的二进制包体积较大,而且用户可能按照了不同的Gradle版本,构建时可能会出现各种问题。因此又提出了Gradle Wrapp
24K纯开源
2018/01/18
1.4K0
Android Studio导入项目非常慢的解决办法
idea导入项目不显示右侧maven的解决办法
有的时候,当我们从git或者gitee上clone下来一个项目,然后通过idea打开的时候,右侧的maven不显示(前提是这是一个maven项目),这种原因一般是由于读取项目出错,没有正确加载到pom文件造成的。
一缕82年的清风
2021/12/07
4.9K0
idea导入项目不显示右侧maven的解决办法
mysql导入文件,source命令/phpmyadmin导入sql文件失败,502 Bad Gateway错误解决办法
前段时间迁移网站的时候,需要导入 sql 文件,小编用的是phpmyadmin管理工具,无论是从本地上传.sql.zip 文件,还是从网站服务器上文件夹 upload 下选择 sql 文件,都上传失败,皆以 502 Bad Gateway 告终。因为时间的关系,之前未作记录,最近闲下来就整理了一下。
主机测评
2021/03/18
1.7K0
【TypeScript 演化史 -- 8】字面量类型扩展 和 无类型导入
在我上一篇更好的类型推断的文章中,解释了 TypeScript 如何用 const 变量和 readonly 属性的字面量始化来推断字面量类型。这篇文章继续讨论这个,扩展和非扩展字面量类型之间的区别。
前端小智@大迁世界
2022/06/15
1K0
【TypeScript 演化史 -- 8】字面量类型扩展 和 无类型导入
PyCharm无法导入第三方模块解决办法
这里运行代码时显示:ModuleNotFoundError: No module named 'schedule'
张旭博客
2022/12/27
1.6K0
PyCharm无法导入第三方模块解决办法
AndroidStudio导入httpmime jar编译不通过的解决办法
apply plugin: ‘com.android.application’ apply plugin: ‘android-apt’ def AAVersion = ‘3.3.2’
小小工匠
2021/08/16
3810
关于pytorch安装之后但是没有办法导入pycharm的原因
安装完pytorch之后没有办法导入的问题,我碰到过两种情况。 第一种:安装了但是python无法导入 什么意思呢,详情参照下图
全栈程序员站长
2022/09/25
2.1K0
关于pytorch安装之后但是没有办法导入pycharm的原因
typescript 接口_typeScript
TypeScript 的核心原则之一是对值所具有的结构进行类型检查。我们使用接口(Interfaces)来定义对象的类型。接口是对象的状态(属性)和行为(方法)的抽象(描述)
全栈程序员站长
2022/09/16
1.1K0
typescript 接口_typeScript
Latex 去掉行号
尝试引用:\usepackage[numbers,sort&compress]{natbib}
林德熙
2022/08/04
3K0
点击加载更多

相似问题

有没有办法去掉+@?标志

111

有没有办法去掉文件末尾的“?”?

130

有没有办法去掉水平的深色填充?

13

有没有办法去掉预先留下的指纹?

40

有没有办法在制表器中去掉rowclick?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文