【问题标题】:Making class private?将课程设为私有?
【发布时间】:2016-03-02 01:40:54
【问题描述】:

这个问题刚刚出现在我的脑海中,但我想在打字稿中以某种方式将课程设为私有......所以这就是正在发生的事情

在我的文件夹 Typescript/circle/circle.ts 我有这个:

class Circle {
  PI:number = 3.14;
  radius:number = 0;
  constructor(public radiusInput:number){
    this.radius = radiusInput  
  }
  getArea(){
    return this.PI*(this.radius*this.radius);
  }
  getCircumfrance(){
    return this.PI*2*this.radius;
  }
}
 var fourCircle:Circle = new Circle(5);

现在,当我转到另一个文件夹 Typescript/enums/enums.ts 时,我实际上可以创建一个 Circle 类的实例。我不想要那个..我想以某种方式将 Circle 类设为私有。你如何在打字稿中实现这一点?

【问题讨论】:

  • 你用module包裹了吗?
  • 不,那是什么?它不告诉网站内部..

标签: class typescript private


【解决方案1】:

将您的类(和其他类型)封装在 modules 中。这是文件中类型的逻辑组织。现在您不能从外部文件中引用它,除非您将 export 关键字添加到类定义中。 module 与 c# 中的 namespace 非常相似。

module MyTypes {
class Circle {
  PI:number = 3.14;
  radius:number = 0;
  constructor(public radiusInput:number){
    this.radius = radiusInput  
  }
  getArea(){
    return this.PI*(this.radius*this.radius);
  }
  getCircumfrance(){
    return this.PI*2*this.radius;
  }
}
}

【讨论】:

  • 哦,我非常感谢!但我只有一个小问题。你喜欢什么例如你决定你想在另一个地方上课。你如何使用它?是进口的吗?非常感谢
  • 如果要创建该类型的实例,可以添加 export 关键字,使其变为 export class Circle。如果模块名称不同,您必须在文件顶部导入该类型或使用完全限定的模块名称,如 new MyTypes.Cicrle(12);
  • 哦,是的,就像 Java 一样。再次感谢!
  • module “命名空间”的关键字(在 TypeScript 1.5 之前被称为“内部模块”)现在应该替换为 namespace。您也可以尝试模块加载器,这样您就可以将文件视为模块。 :)
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多