You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript:基于泛型实现指定尺寸方阵类,编译期校验尺寸合法性

问题:实现支持泛型尺寸的方阵类,编译期校验尺寸合法性

我希望实现一个支持泛型尺寸的方阵类,同时实现矩阵间的标准运算方法(加法、乘法),但仅允许同尺寸矩阵进行运算。核心目标是:

  • 将所有尺寸的矩阵类型统一到单个类中
  • 在编译期而非运行时捕获尺寸不匹配的错误

我尝试用联合类型作为泛型参数,比如class Matrix<S = 3|4>,但不知道如何在类中判断S具体是3还是4并做对应处理。我知道可以通过抽象类+多个尺寸子类的方式实现,但这种写法太繁琐了……


补充说明(实用提示)

我已经找到可行的解决方案,这里补充一个帮助他人实现编译期校验乘法的技巧:通过在方法中添加泛型参数,约束矩阵乘法的尺寸合法性,示例代码如下:

type Size = 1|2|3|4;
class Matrix<I extends Size, J extends Size> {
    readonly iMax: I;
    readonly jMax: J;
    // 矩阵元素存储(例如用二维数组)

    constructor(iMax: I, jMax: J){
        this.iMax = iMax;
        this.jMax = jMax;
        // 初始化矩阵元素的逻辑
    }

    mult<K extends Size>(x: Matrix<J,K>): Matrix<I,K>{
        // 实现矩阵乘法的计算逻辑
        return new Matrix(this.iMax, x.jMax); // 示例返回,需替换为实际计算
    }
}

// 编译期错误:第一个矩阵的列数(3)和第二个矩阵的行数(2)不匹配
new Matrix(3,3).mult(new Matrix(2,2));

内容的提问来源于stack exchange,提问作者Théo Marty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:52:42