【发布时间】:2021-01-08 07:49:55
【问题描述】:
显然,我不明白 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;
}
我在这里尝试做的是从 socket.io 扩展给定的“Socket”接口,方法是添加一个“id”属性并扩展“handshake”属性。 TypeScript 不接受后者。 TS 声称“SessionHandshake 缺少 Handshake 类型的 x、y、z 属性”。 但这怎么可能呢?我将 SessionHandshake 定义为 Handshake 接口的扩展。 TS 怎么能声称它不具备 Handshake 的所有属性?
在此处使用 TS 4.1.3。
【问题讨论】:
-
你是如何使用这些类型的?什么代码抛出 "SessionHandshake is missing x, y, z properties from type Handshake" 错误?
-
这是一个编译错误。
export interface SessionSocket告诉我存在问题:“接口 'SessionSocket' 错误地扩展了接口 'Socket'。属性 'handshake' 的类型不兼容。类型 'SessionHandshake' 缺少来自类型 'Handshake' 的以下属性:标头、时间、地址、xdomain 和另外 5 个。`
标签: typescript interface extension-methods