如何解决是否打算显式导出和导入所有打算供其他类使用的TypeScript类?
是否打算显式导出和导入所有打算由其他类使用的类?
我目前有一个项目,我已从Angular 8升级到Angular 10,并注意到很多错误,这些错误可能与不良设计或错误编译器有关(我认为这是一个糟糕的设计,我认为TypeScript的新手,也许新的编译器更挑剔?)。对于我所引用的每个不使用export / import语句的类,在将项目升级到Angular 10之后,现在都出现以下错误。可以通过使每个类上都带有关键字“ export”的方法来解决此错误。 ,但这意味着我要明确导出,目的是在需要的地方导入。但是,这些类打算在应用程序的全局范围内使用,我希望每个其他模块都可以看到这些类而不必显式导入它们,因为这些帮助器类和类型已在各处使用。但是,注意到这些错误后,看来我想做的事情是不可能的。因此,总而言之,我是否需要显式导出和导入要引用的所有类?
旧代码
class Person {
public first:string;
public last:string;
constructor(
first:string,last:string,)
{
this.first = first;
this.last = last;
}
get fullName(): string {
return this.first + ' ' + this.last;
}
}
新代码
export class Person { //I would rather not use the export keyword since Person should be used everywhere
public first:string;
public last:string;
constructor(
first:string,)
{
this.first = first;
this.last = last;
}
get fullName(): string {
return this.first + ' ' + this.last;
}
}
引用类:
// import { Person } from '../sharedTypes/person'; //needed if I use the export in the Person class
export class PurchaseOrder {
public name: string;
public poChargeNumber: ChargeNumber;
public siteLocation: Address;
public deliverTo: Person;
public vendor: Vendor;
public lineItems: LineItem[];
constructor(
chargeNum: ChargeNumber,siteLocation: Address,deliverTo: Person,lineItems: LineItem[],)
{
this.poChargeNumber = chargeNum;
this.siteLocation = siteLocation;
this.deliverTo = deliverTo;
if (lineItems === null || lineItems === undefined)
this.lineItems = new Array<LineItem>();
else
this.lineItems = lineItems;
}
}
错误:
src/app/purchaseorder-doc/purchaseOrder.ts:13:20 - error TS2304: Cannot find name 'ChargeNumber'.
13 chargeNum: ChargeNumber,~~~~~~~~~~~~
src/app/purchaseorder-doc/purchaseOrder.ts:14:23 - error TS2304: Cannot find name 'Address'.
14 siteLocation: Address,~~~~~~~
src/app/purchaseorder-doc/purchaseOrder.ts:15:20 - error TS2304: Cannot find name 'Person'.
m15 deliverTo: Person,
解决方法
是的,您绝对应该使用导入/导出机制。
过去,JavaScript开发人员会编写将变量/类放入全局范围的代码,例如像这样:
window.SomeClass = SomeClass
还有一个臭名昭著的隐式全局,它被严格模式捕获:
// Globally available in the window!
myVar = 'my-Value'
今天有了像Angular这样的框架,我绝对会认为这是一种不好的做法,只有在没有其他解决方案可用的特殊情况下才诉诸于此。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。