打字稿函数类型分配问题

     2023-03-13     296

关键词:

【中文标题】打字稿函数类型分配问题【英文标题】:Typescript function type assignment issue 【发布时间】:2018-10-11 12:49:49 【问题描述】:

我正在尝试在我的应用程序中使用 json-rpc-ws 库,但我遇到了由库定义的处理程序函数签名问题。

该库在声明文件中具有以下类型别名(连接是一个接口):

export type Handler<TConnection extends Connection, ParamType, ParamCallbackType> = (this: TConnection, params: ParamType, reply: ReplyCallback<ParamCallbackType>) => void;
export type ReplyCallback<ParamType> = (error: any, params?: ParamType) => void;

现在我正在尝试通过以下方式在测试代码中创建处理函数:

// Define a function
const func = (conn: Connection, params: IMyRequest, reply: ReplyCallback<IMyResponse> ) =>  

// Try cast to a handler
const handlerFunc = func as Handler<Connection, IMyRequest, IMyResponse>;

但是我收到一个错误,func 无法转换为相应的类型。我在这里缺少什么?

如果有什么不同,我正在使用 Typescript 2.8.1。

【问题讨论】:

请提供完整的错误信息。 [ts] Type '(conn: Connection, params: IMyRequest, reply: ReplyCallback&lt;IMyResponse&gt;) =&gt; void' cannot be converted to type 'Handler&lt;Connection, IMyRequest, IMyResponse&gt;'. 【参考方案1】:

好的,我想我明白了。在库的定义文件中,this 被键入为连接的继承类型,这是因为在此上下文中调用了处理函数。但是我不需要在我的处理函数中显式提供该参数(因为它已经为this 定义了)。

我的函数的正确签名是:

const func = (params: IMyRequest, reply: ReplyCallback<IMyResponse> ) =>  

【讨论】:

没错。这意味着该函数将在 Connection 对象的上下文中调用。

打字稿:类型'null'不可分配给类型错误

】打字稿:类型\\\'null\\\'不可分配给类型错误【英文标题】:Typescript:Type\'null\'isnotassignabletotypeerror打字稿:类型\'null\'不可分配给类型错误【发布时间】:2018-02-0202:24:20【问题描述】:将以下代码转换为打字稿时出现错误。conste... 查看详情

打字稿错误类型'null'不可分配给类型

】打字稿错误类型\\\'null\\\'不可分配给类型【英文标题】:TypescriptErrorType\'null\'isnotassignabletotype打字稿错误类型\'null\'不可分配给类型【发布时间】:2021-06-1704:21:31【问题描述】:在我的项目中,我使用AngularLocalStorage来存储文件... 查看详情

打字稿 - 字符串'不可分配给类型'FC

】打字稿-字符串\\\'不可分配给类型\\\'FC【英文标题】:Typescript-string\'isnotassignabletotype\'FC打字稿-字符串\'不可分配给类型\'FC【发布时间】:2021-11-1005:23:15【问题描述】:我遇到了错误Type\'(props:PropsWithChildren)=>string\'不可分配... 查看详情

打字稿类型'字符串| null' 不可分配给类型 'string'

】打字稿类型\\\'字符串|null\\\'不可分配给类型\\\'string\\\'【英文标题】:TypeScriptType\'string|null\'isnotassignabletotype\'string\'打字稿类型\'字符串|null\'不可分配给类型\'string\'【发布时间】:2022-01-1702:04:21【问题描述】:在这个片段中... 查看详情

打字稿:'字符串| undefined' 不可分配给类型 'string'

】打字稿:\\\'字符串|undefined\\\'不可分配给类型\\\'string\\\'【英文标题】:TypeScript:\'string|undefined\'isnotassignabletotype\'string\'打字稿:\'字符串|undefined\'不可分配给类型\'string\'【发布时间】:2019-04-1016:20:58【问题描述】:我正在使... 查看详情

类型“数字”不可分配给类型“日期” - 打字稿未编译

】类型“数字”不可分配给类型“日期”-打字稿未编译【英文标题】:Type\'number\'isnotassignabletotype\'Date\'-Typescriptnotcompiling【发布时间】:2017-01-1823:06:06【问题描述】:我有一个jquery计时器插件的以下代码。编译器给了我错误:... 查看详情

打字稿错误:类型“文档 []”不可分配给自定义类型

】打字稿错误:类型“文档[]”不可分配给自定义类型【英文标题】:Typescripterror:Type\'Document[]\'isnotassignabletocustomtype【发布时间】:2021-12-2908:39:18【问题描述】:有一个简单的nestJS服务,它返回一个mongoDb查询的结果。如您所见... 查看详情

打字稿错误类型无法分配给状态 - usestate

】打字稿错误类型无法分配给状态-usestate【英文标题】:Typescripterrortypenotassignabletostate-usestate【发布时间】:2020-08-2503:53:09【问题描述】:我是键入脚本的新手,我正在尝试使用使用状态挂钩和键入脚本来设置响应状态。constinti... 查看详情

打字稿:使用排除时,类型 T 不可分配给类型“从不”

】打字稿:使用排除时,类型T不可分配给类型“从不”【英文标题】:Typescript:TypeTisnotassignabletotype\'never\'whenusingExclude【发布时间】:2021-12-0508:53:56【问题描述】:我正在尝试:所有字段名称的列表无法排序的字段名称列表我试... 查看详情

打字稿不正确的分配/映射到强类型对象[关闭]

】打字稿不正确的分配/映射到强类型对象[关闭]【英文标题】:Typescriptincorrectassignment/mappingintostronglytypedobject[closed]【发布时间】:2019-05-1001:43:19【问题描述】:我有一个原始对象,我想将它映射/分配给Typescript的类型化对象。... 查看详情

具有通用方法和继承的打字稿工厂,错误不可分配给类型

】具有通用方法和继承的打字稿工厂,错误不可分配给类型【英文标题】:Typescriptfactorywithgenericmethodandinheritance,errorisnotassignabletotype【发布时间】:2020-12-1409:45:56【问题描述】:为什么打字稿编译器不接受以下代码?(我试图让... 查看详情

打字稿为“对象”分配特定类型而不是“任何”

】打字稿为“对象”分配特定类型而不是“任何”【英文标题】:Typescriptassign\'Object\'aspecifictypeinsteadof\'any\'【发布时间】:2021-03-1721:02:15【问题描述】:由于--strict_checks和typescripteslint检查,我正在尝试修复我的代码中的一些新... 查看详情

样式组件 + 打字稿:“as”不可分配给类型 IntrinsicAttributes

】样式组件+打字稿:“as”不可分配给类型IntrinsicAttributes【英文标题】:Styledcomponents+typescript:"as"isnotassignabletotypeIntrinsicAttributes【发布时间】:2021-04-2017:26:36【问题描述】:我有一个monorepo,其中包含一个由样式化组件... 查看详情

打字稿:“RegExpMatchArray”类型的参数不可分配给“字符串”类型的参数

】打字稿:“RegExpMatchArray”类型的参数不可分配给“字符串”类型的参数【英文标题】:Typescript:Argumentoftype\'RegExpMatchArray\'isnotassignabletoparameteroftype\'string\'【发布时间】:2016-09-2618:37:25【问题描述】:我有以下表达:importpersistS... 查看详情

打字稿键盘事件:“事件”类型的参数不可分配给“键盘事件”类型的参数

】打字稿键盘事件:“事件”类型的参数不可分配给“键盘事件”类型的参数【英文标题】:Typescriptkeyboardevent:argumentoftype\'Event\'isnotassignabletoparameteroftype\'KeyboardEvent\'【发布时间】:2018-04-2523:26:07【问题描述】:即使代码运行完... 查看详情

date.getDate 不是函数打字稿

】date.getDate不是函数打字稿【英文标题】:date.getDateisnotafunctionTypescript【发布时间】:2019-11-2206:25:28【问题描述】:我有3个输入控件,两个日期类型,一个是数字,我想做的是从第一个控件获取日期,而不是。来自其他控件的... 查看详情

打字稿类型“数字”不可分配│键入“字符串”

】打字稿类型“数字”不可分配│键入“字符串”【英文标题】:TypescriptType\'number\'isnotassignable│totype\'string\'【发布时间】:2018-07-1802:46:14【问题描述】:我目前正在为Angular4应用程序制作货币格式化程序指令。在解析时去掉除... 查看详情

使用反应成帧器类型'()=> void'的打字稿错误不可分配给类型'未定义'

】使用反应成帧器类型\\\'()=>void\\\'的打字稿错误不可分配给类型\\\'未定义\\\'【英文标题】:ErrorintypescriptusingreactframerType\'()=>void\'isnotassignabletotype\'undefined\'使用反应成帧器类型\'()=>void\'的打字稿错误不可分配给类... 查看详情