是否为工厂功能指定了返回类型?

时间:2019-05-16 12:18:03

标签: typescript

我目前可以使用接口和命名类型来描述工厂函数的返回值

return CFunction<TRet(Arg1, Arg2)>::template Create<TClass, func>();
//                                  ^~~~~~~~

在不命名返回类型的情况下,TypeScript会根据返回值来推断类型-但是类型是未命名的,并且在编辑器中无法读取。

是否可以在工厂函数中命名返回类型?

我正在想象类似

{{2 }}

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}
}