[英]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.