繁体   English   中英

Typescript 接口 A 扩展了 B,但缺少 B 的属性?

[英]Typescript interface A extends B, but is missing properties from B?

显然,我不明白 TypeScript 接口是如何工作的。 我有这个:

import type { Socket, Handshake } from 'socket.io';
import type { Session } from './session';

export interface SessionHandshake extends Handshake {
  session: Session;
}

export interface SessionSocket extends Socket {
  handshake: SessionHandshake;
  id: string;
}

我在这里尝试做的是通过添加“id”属性并扩展“handshake”属性来扩展 socket.io 给定的“Socket”接口。 TypeScript 不接受后者。 TS 声称“SessionHandshake 缺少 Handshake 类型的 x、y、z 属性”。 但这怎么可能呢? 我将 SessionHandshake 定义为 Handshake 接口的扩展。 TS 怎么能声称它不具备 Handshake 的所有属性?

在这里使用 TS 4.1.3。

关键字extends只能用于接口和类。

Handshake是一种类型,因此您不能使用关键字extends

如果您只想声明具有附加属性的类型,则可以使用交集类型

export type SessionHandshake = Handshake & { session: string };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM