我想创建一个满足这种类型的对象:
call "C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\rsvars.bat"
msbuild "C:\Users\carlos.santos\Desktop\teste\Project1.dproj" /p:_EnvLibraryPath="C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib\EN;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib"
并传递TypeScript类型检查。理想情况下,我不想采用诸如使用interface I {
(): string;
[x: string]: number;
}
作为中间步骤的技巧。
我知道可以将其他字段添加到具有呼叫签名的界面中,如下所述:Implementing TypeScript interface with bare function signature plus other fields。
我试着写:
any
但我收到错误:const foo: I = Object.assign(
// Callable signature implementation
() => 'hi',
{
// Additional properties
text2: 3
}
)
我很想知道是否有办法创建实现接口Type '(() => "hi") & { text2: number; }' is not assignable to type 'I'. Index signature is missing in type '(() => "hi") & { text2: number; }'.
的对象。
答案 0 :(得分:1)
如果您不将类型定义为接口,而是将交叉类型的类型别名定义,则可以在没有断言的情况下执行此操作:
type I = {
(): string;
} & {
[x: string]: number;
}
// Will work
let d:I= Object.assign(function() { return ""}, {
text: 10
});
不确定为什么一个有效而另一个无效,它们的公共结构本质上是相同的,它可能是一个编译器错误。
修改提交bug我们必须等待回复
答案 1 :(得分:0)