gpt4 book ai didi

javascript - 为什么以下函数抛出 Object is possible is 'undefined' ?

转载 作者:行者123 更新时间:2023-12-04 07:18:31 25 4
gpt4 key购买 nike

我正在尝试创建一个具有以下结构的小型库:

library('input').method()
这是代码( addQuotes 方法将引号添加到 string 输入):
const library = function (text: string) {
interface ValueObject {
addQuotes?: Function
} // Without this, I get "Property 'to' does not exist on type '{}'."

const options: ValueObject = {}

options.addQuotes = function () {
if (!text) return ''
return `"${text}"`
}

return options
}

const result = library('test').addQuotes()
console.log(result)
现在,TypeScript 是这个位的基础:
library('test').addQuotes() 
告诉我这个:
Object is possibly 'undefined'.
可能是什么问题以及如何解决?
https://jsbin.com/vonawucada/1/edit?js,console
(代码在这里运行,但在我的 VS Code 设置中,我确实收到了 TypeScript 错误。)

最佳答案

问题在于您的库模块的返回类型。库的返回类型是 ValueObject这是一个私有(private)接口(interface)。这意味着它的范围仅限于库模块。 Typescript 永远不会理解私有(private)接口(interface)的返回类型。
解决方案是移动 ValueObjet接口(interface)超出库模块范围并将其公开,以便 typescript 可以理解库函数的返回类型是什么。

interface ValueObject {
addQuotes: Function;
}

const library = function (text: string) {
const options = {} as ValueObject;

options.addQuotes = function () {
if (!text) return "";
return `"${text}"`;
};

return options;
};

const result = library("test").addQuotes();
console.log(result);

关于javascript - 为什么以下函数抛出 Object is possible is 'undefined' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68645521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com