如何在常量中使用接口
Posted
技术标签:
【中文标题】如何在常量中使用接口【英文标题】:How to use interface in constant 【发布时间】:2016-09-09 22:05:51 【问题描述】:我正在尝试在打字稿中创建一个带有子对象的对象。我正在尝试设置一个猫鼬模式,如this question 所示。
如果我将对象和子对象定义为接口,我将无法在可以设置为猫鼬模式的常量中使用它们。
那么有没有办法让我不必输入整个子对象两次,一次在接口中,一次在常量中?
export interface Pizza
flavor: String;
size: String;
export interface Menu
pizza: Pizza
// Doesn't work
export const Menu =
store: String,
menu: Menu
// Works
export const Menu =
store: String,
menu:
pizza:
flavor: String,
size: String
// What I really want
export const Menu = new mongoose.Schema(
store: String,
menu: Menu
);
// What I'm doing right now
export const Menu = new mongoose.Schema(
store: String,
menu:
pizza:
flavor: String,
size: String
);
【问题讨论】:
你的代码中也有Menu
s。你希望它是一个接口还是一个变量/常量?
@NitzanTomer 我只是将它们都放在那里进行比较,说明我想要什么以及我必须使用什么。我想使用接口中的 const 或者实现同样事情的方法。
【参考方案1】:
我没有使用过猫鼬,但据我所见,构造 mongoose.Schema
需要真实的对象,您尝试传递的是仅在编译之前存在的打字稿接口,之后生成的 javascript不包括它们。
也许这就是你要找的东西:
export class Pizza
flavor: String;
size: String;
export class Menu
pizza: Pizza
export const Menu = new mongoose.Schema(
store: String,
menu: Menu
);
我只是将您的接口转换为已编译的 javascript 中存在的类。
【讨论】:
就是这样。谢谢!以上是关于如何在常量中使用接口的主要内容,如果未能解决你的问题,请参考以下文章