将 Angular 与 TypeScript 和命名空间一起使用 [英] Using Angular with TypeScript and Namespaces

查看:25
本文介绍了将 Angular 与 TypeScript 和命名空间一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个大型应用程序,我正在尝试评估 TypeScript 和 Angular 作为要使用的基础技术.

I'm in the process of building a large-scale application and I'm trying to evaluate TypeScript and Angular as the base technologies to use.

不幸的是,在我开始使用 Angular 后,我在命名自己的 TypeScript 文件时遇到了问题.

Unfortunately, I'm having an issue with namespacing my own TypeScript files once I begin using Angular.

英雄教程为例,我试图使它与我看到自己的应用程序的结构相匹配.

Taking the example of the Heroes tutorial, I tried to make it match how I would see my own application being structured.

- app 
-- boot.ts

- Heroes
-- Components
--- HeroDetail.ts
--- HeroList.ts

-- Interfaces
--- IHero.ts

在这个结构中,我尝试为每个逻辑区域使用命名空间,以便对它们进行分组.这导致 IHero 看起来像这样(例如):

Within this structure, I then attempted to use namespaces for each logical area in order to group them. This resulted in IHero looking like this (for example):

namespace Heroes.Interfaces
{
  export interface IHero
  {
    Id: number;
    Name: string;
  }
}

在我尝试通过以下方式将 Angular 添加到组合中之前,以这种结构构建项目效果很好:import {Component} from 'angular2/core';发生这种情况时,文件会丢失对同一命名空间中其他代码的所有引用,并且无法让它发现它们.

Building the project in this structure works well until I attempt to add Angular into the mix by way of: import {Component} from 'angular2/core'; When this happens, the file loses all references to other code in the same namespace and there's no way to make it discover them.

我见过 这个问题问了同样的问题.在那里,答案提到了解决方法".出于这个原因,我认为这是可能的,但更重要的是,我想知道为什么它不是现在?这是一个错误还是设计使然?我一直在考虑在 TS GitHub 上提出它,但我想在走这条路之前了解更多信息.

I've seen this question asked about the same issue. There, the answer mentions "work arounds". For this reason I'm thinking it's POSSIBLE, but more than that I'm wondering why it ISN'T at the minute? Is this a bug or by design? I've been considering raising it on the TS GitHub but I would like to be a little better informed before going down that route.

感谢您的建议!

推荐答案

这是一个错误还是设计使然?

Is this a bug or by design?

这是设计使然.如果您使用文件模块,请不要使用命名空间.每个文件都已经是一个模块.你的整个项目都需要一个模块加载器.

This is by design. Don't use namespaces if you are using file modules. Each file is already a module. And your whole project needs a module loader.

阅读: Angular 2 模块 vs JavaScript 模块 —Angular 2 架构文档

Read: Angular 2 Modules vs JavaScript Modules — Angular 2 Architectural Documentation

这篇关于将 Angular 与 TypeScript 和命名空间一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆