我有一个类,我想要一些可选的嵌套属性。
class Input {
stuff {
first_name?: string; // optional
};
然而,似乎这不是合法的打字稿。 ; expected
接下来是把东西拉进界面
interface IFrom {
id: any;
first_name?: string;
};
class Input {
from:IFrom;
然而,当我把它们放在同一个文件中时,我得到了
tsPublic property 'from' of exported class has or is using private name 'IFrom'.
我无法制作public interface
'public' modifier cannot appear on a module element.
我最终做的是将界面放在另一个文件中,但这将成为宇航员工程,其中每个结构和属性都需要在自己的文件中...
我错过了一些关于如何做到最好的事情吗? 我希望first_name属性是公共的,但是结构的一部分。 希望它是可选的。 更喜欢单个文件。
谢谢!
答案 0 :(得分:1)
您应该将关键字export
与接口和类一起使用,而不是public
。
以下是一个例子:
module ModuleA {
export interface IFrom {
id: any;
first_name?: string;
}
}
module ModuleB {
export class Input {
from:ModuleA.IFrom;
}
}
var input = new ModuleB.Input();
input.from = {id: 123, first_name: 'Bob'};
alert(input.from.first_name); // Bob
答案 1 :(得分:1)
然而,似乎这不是合法的打字稿。 ;预期
内联类型的语法不正确。您错过了:
。以下工作正常:
class Input {
stuff: {
first_name?: string; // optional
};
}
来自导出类的公共属性'已经或正在使用私有名称'IFrom'。
您可能拥有export class
...这意味着您还需要执行export interface
来导出该类使用的任何界面。