当前位置: 首页 > 知识库问答 >
问题:

Angular项目中带或不带export关键字的类和接口

越安翔
2023-03-14

我正在学习角度,选择了一个视频课程和一本pdf书,现在我对“出口”关键字的使用感到困惑...

两门课的一个例子来展示我的困惑...我只需要朝正确的方向快速踢一脚,就能克服这个小障碍。

Visual Studio 2017

示例项目使我在clientapp/app文件夹中创建了一个接口文件夹,并在其中放置了一个接口“answer.ts”。这是没有关键字“导出”。

interface IAnswer {
    Id: number;
    QuestionId: number;
    Text: string;
    Value: number;
}
import { Component, Inject, Input, OnChanges, SimpleChanges } from "@angular/core";
import { Router } from "@angular/router";
import { HttpClient } from "@angular/common/http";

@Component({
    selector: "answer-list",
    templateUrl: "./answer-list.component.html",
    styleUrls: ["./answer-list.component.css"]
})

export class AnswerListComponent implements OnChanges {
    @Input() question: IQuestion;
    answers: IAnswer[];
    title: string;

    constructor(private http: HttpClient,
        @Inject("BASE_URL") private baseUrl: string,
        private router: Router) {

        this.answers = [];
    }

    ngOnChanges(changes: SimpleChanges) {
        if (typeof changes['question'] !== "undefined") {
            //alert(1);
            // retrieve the question variable change info
            var change = changes['question'];

            // only perform the task if the value has been changed
            if (!change.isFirstChange()) {
                // execute the Http request and retrieve the result
                this.loadData();
            }
        }
    }

    loadData() {
        var url = this.baseUrl + "api/answer/All/" + this.question.Id;
        this.http.get<IAnswer[]>(url).subscribe(res => {
            this.answers = res;
        }, error => console.error(error));
    }
}
export class Recipe {
    constructor(public name: string, public description: string, public imagePath: string){
    }
}
import { Recipe } from "../../recipes/recipe.model";

@Injectable()
export class DataStorageService {
    getRecipes(){
        //get a authentication token
        const token = this.authService.getToken();
        const tokenQuery = '?auth=' + token

        this.http.get(this.recipesNode + tokenQuery)
        .pipe(
            map(
                (response: Response) => {
                    //we saved array of recipes 
                    const recipes: Recipe[] = response.json();
                    return recipes;
                }
            )
        )
        .subscribe(
            (recipes: Recipe[]) => {
                this.recipeService.setRecipes(recipes);
            }
        );
    }
}

共有1个答案

南宫兴德
2023-03-14

它取决于项目中的compileroptions集。您可以强制系统期待或不期待export。通常,这个决定是根据以下问题做出的:是使用WebPack、Browserify还是其他模块化加载器,还是只想将给定的*.ts-文件转换为*.js-文件。请看一下这个帖子:

未定义TypeScript导出

 类似资料:
  • 我今天在这里是因为我有一个问题,就像标题所说的,关于Angular中的类和接口。 在我看来,我理解这一点: 接口在Typescript中用于执行类型检查,它们一直在这里,直到发生转换并在生产中消失。此外,接口不能用于实例化。 来自ES6的类也用于类型检查,但它们会在转换后保留,并在生产中生成代码。此外,它们还用于实例化。 所以,基本上,若我们在生产中不需要它们,若我们只需要进行类型检查,那个么接口

  • 在使用Typescript时,我意识到模块中的类(用作命名空间)对于其他类是不可用的,除非我在它们前面写了关键字,例如: 但是,我只是想知道为什么使用这个关键字而不是仅仅使用关键字,后者在方法级别用于表示方法或属性应该是外部可访问的。那么,为什么不直接使用这种机制来使类和接口等外部可见呢? 这将给出如下代码:

  • 使(或其他集合)成为final的优点/缺点是什么?如果我们尝试这样做呢: 这是有效的吗?现在引用A将指向L所指向的这个数组列表?请帮帮忙。

  • 问题内容: 如果声明变量而不使用“ var”,则变量始终变为GLOBAL。 在函数内部声明全局变量是否有用?我可以想象在某个事件处理程序中声明一些全局变量,但这有什么用呢?更好地使用RAM? 问题答案: 不,没有RAM好处或类似的好处。 w3schools谈论的是我所说的“内隐全球性恐怖” 。考虑以下功能: 看起来很简单,但是由于线路上的错字,它返回,而不是。并创建一个带有输入错误名称的全局变量:

  • 问题内容: 渲染时捕获到异常: 找不到带有参数’()’和关键字参数’{}’的’products.views.’filter_by_led’。 我能够从shell成功导入,并且可以正常工作,因此路径应该正确。 这是urls.py: 这是生成错误的地方: 我不明白,因为这可以在同一个文件中正常工作: 这是函数定义: 我不明白为什么Django会认为该函数无法为该函数找到Reverse。 我删除了所有文

  • s代表“hi”,s1代表hi所在的内存位置? 请帮帮忙?