使用 TypeScript,我尝试创建一个 Material-UIAutoComplete组件,该组件根据对象属性名称获取输入值 ->obj[key]
但是,该道具getOptionLabel显示以下错误:
输入 '(选项: T) => T[keyof T] | “”' 不可分配给类型 '(option: T) => string'。
该 prop 需要一个字符串,我知道对象属性的值可能不是字符串。
问题:为什么根据以下代码会发生此错误,我该如何解决?
Codesandbox 链接: https://codesandbox.io/s/mui-ts-generic-autocomplete-o0elk? fontsize=14&hidenavigation=1&theme=dark
还有原始代码,以防codesandbox链接在某些时候没有反映原始问题:
import * as React from "react";
import { Autocomplete } from "@material-ui/lab";
import { TextField } from "@material-ui/core";
export const isString = (item: any): item is string => {
return typeof item === "string";
};
type AutoCompleteFieldProps<T> = {
selectValue: keyof T;
options: T[];
};
// Top …Run Code Online (Sandbox Code Playgroud) 通过 JIMP 将图像从 Nodejs 后端上传到 AWS S3 会填满内存堆。
服务器托管在 Heroku 上,只有 512MB RAM。上传较小的图像和所有其他请求工作正常。但是,当上传一个大于约 8MB 的图像时,应用程序会崩溃,并且只有一个用户在线。
我试图在我的本地环境中复制这个。由于我没有内存限制,应用程序不会崩溃,但上传 10MB 图像时内存使用量约为 870MB。一个 6MB 的图像保持在 60MB 左右的 RAM 使用量。我已经更新了所有 npm 包,并尝试禁用对图像的任何处理。
我试图寻找内存泄漏,如下面的屏幕截图所示,但是,对于相同的图像 (6MB) 遵循与上述相同的工作流程,并拍摄 3 个堆快照会产生大约 60MB 的 RAM 使用量。
首先,我认为问题在于图像处理(调整大小)占用了太多内存,但这并不能解释 60MB(对于 6MB 图像)和 10MB 图像大约 800MB 之间的巨大差距。
然后我认为它与“system / JSArrayBufferData”项(见 ref2)有关,它占用了大约 30% 的内存。然而,这个项目总是在那里,即使我不上传图片。它仅在我停止“Chrome 开发工具”下的“内存选项卡”中的录制快照之前出现。但是,我仍然不能 100% 确定它到底是什么。
现在,我相信这与“TimeList”有关(参见 ref3)。我认为它来自等待文件上传到 S3 的超时。但是,在这里,我也绝对不确定为什么会发生这种情况。 …