非导出接口的类型断言
Type assertion for non exported interface
我是 Typescript 的新手,如果这是一个简单的问题,我深表歉意。
我正在尝试在 Electron (http://electron.atom.io/). I have added the type declarations using typings (https://github.com/typings/typings) 上为 运行 构建一个应用程序 - 使用 env: electron typings。
这好像没问题。我现在可以根据需要从类型中导入声明。
但是,我正在尝试为我的应用程序创建一个应用程序菜单。我想使用的方法是创建一个 "template" 对象并使用 Menu.buildFromTemplate 方法 (http://electron.atom.io/docs/api/menu/).
我面临的问题是 Menu.buildFromTemplate 的类型定义指定:
static buildFromTemplate(template: MenuItemOptions[]): Menu;
并且MenuItemOptions界面没有在定义文件中导出。
我试过两件事:
const template = [
{
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
role: 'undo'
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
role: 'redo'
}
]
}
];
const menu = Menu.buildFromTemplate(template);
这给了我一个错误:“'{ 标签:字符串;子菜单:{ 标签:字符串;加速器:字符串;角色:字符串;}[];}[]' 类型的参数不可分配给参数输入 'MenuItemOptions[]'."
据此,我认为我需要将模板转换为 MenuItemOptions。但是,我无法将 MenuItemOptions 添加到导入中,因为它没有在定义中导出。
这是不是定义错误。 MenuItemOptions 是否也应该导出?或者,我做错了什么。
如果需要,我可以提供完整的源代码。
明确输入 template
适合我
const template : Electron.MenuItemOptions[] = [
{
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
role: 'undo'
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
role: 'redo'
}
]
}
];
const menu = Menu.buildFromTemplate(template);
这似乎是因为 role
属性 注册为类型 string
与类型 '"undo" | "redo" | "cut" | "copy" | "paste" | "selectall" | "minimize" | "close" | "about" | "hide...'
不兼容
我是 Typescript 的新手,如果这是一个简单的问题,我深表歉意。
我正在尝试在 Electron (http://electron.atom.io/). I have added the type declarations using typings (https://github.com/typings/typings) 上为 运行 构建一个应用程序 - 使用 env: electron typings。
这好像没问题。我现在可以根据需要从类型中导入声明。
但是,我正在尝试为我的应用程序创建一个应用程序菜单。我想使用的方法是创建一个 "template" 对象并使用 Menu.buildFromTemplate 方法 (http://electron.atom.io/docs/api/menu/).
我面临的问题是 Menu.buildFromTemplate 的类型定义指定:
static buildFromTemplate(template: MenuItemOptions[]): Menu;
并且MenuItemOptions界面没有在定义文件中导出。
我试过两件事:
const template = [
{
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
role: 'undo'
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
role: 'redo'
}
]
}
];
const menu = Menu.buildFromTemplate(template);
这给了我一个错误:“'{ 标签:字符串;子菜单:{ 标签:字符串;加速器:字符串;角色:字符串;}[];}[]' 类型的参数不可分配给参数输入 'MenuItemOptions[]'."
据此,我认为我需要将模板转换为 MenuItemOptions。但是,我无法将 MenuItemOptions 添加到导入中,因为它没有在定义中导出。
这是不是定义错误。 MenuItemOptions 是否也应该导出?或者,我做错了什么。
如果需要,我可以提供完整的源代码。
明确输入 template
适合我
const template : Electron.MenuItemOptions[] = [
{
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
role: 'undo'
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
role: 'redo'
}
]
}
];
const menu = Menu.buildFromTemplate(template);
这似乎是因为 role
属性 注册为类型 string
与类型 '"undo" | "redo" | "cut" | "copy" | "paste" | "selectall" | "minimize" | "close" | "about" | "hide...'