我目前可以使用接口和命名类型来描述工厂函数的返回值
return CFunction<TRet(Arg1, Arg2)>::template Create<TClass, func>();
// ^~~~~~~~
在不命名返回类型的情况下,TypeScript会根据返回值来推断类型-但是类型是未命名的,并且在编辑器中无法读取。
是否可以在工厂函数中命名返回类型?
我正在想象类似
{{2 }}答案 0 :(得分:0)
您可以将create
变量的类型描述为返回Thing
的函数:
const create: () => Thing = () => ({
thing: 'sdf'
});
答案 1 :(得分:0)
有时做这样的事情会很好:
"Terminated {0:MM/dd/yyyy} - Delete from AD on {1:MM/dd/yyyy}" -f $currentDate, $futureDate
或者这个:
function foo() { // ❌
interface Foo {x: number, y: number}
return {x: 4, y: 5} as Foo
}
因为它允许你命名你的返回类型而不会混淆模块级类型。但是,两者都给出了编译时错误:
function foo(): Foo { // ❌
interface Foo {x: number, y: number}
return {x: 4, y: 5}
}
最后,这根本没有解析:
Return type of exported function has or is using private name 'Foo'.
所以你被困在模块级别。请注意,虽然不需要导出类型。
// ❌
function foo(): (interface Foo {x: number, y: number}) {
return {x: 4, y: 5}
}