MST

星途 面试题库

面试题:TypeScript 泛型在机器学习前端类型接口规范中的高级应用

假设你要设计一套通用的机器学习前端数据处理模块,该模块可处理不同类型的模型预测结果,预测结果可能是数值型回归结果(单个 number)、多标签分类结果(string 数组)、单标签分类结果(string)等。请使用 TypeScript 泛型来设计一套灵活的类型接口规范,使得数据处理函数能够通用地处理这些不同类型的预测结果,同时保持类型安全。要求写出类型定义以及至少一个使用该泛型接口的示例函数。
44.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 类型定义
type PredictionResult<T> =
  | { type: 'numeric'; value: number }
  | { type:'multi-label'; value: string[] }
  | { type:'single-label'; value: string };

// 泛型接口
interface DataProcessor<T> {
  process(result: PredictionResult<T>): void;
}

// 使用泛型接口的示例函数
class NumericProcessor implements DataProcessor<number> {
  process(result: PredictionResult<number>) {
    if (result.type === 'numeric') {
      console.log(`处理数值型回归结果: ${result.value}`);
    }
  }
}

class MultiLabelProcessor implements DataProcessor<string[]> {
  process(result: PredictionResult<string[]>) {
    if (result.type ==='multi-label') {
      console.log(`处理多标签分类结果: ${result.value.join(', ')}`);
    }
  }
}

class SingleLabelProcessor implements DataProcessor<string> {
  process(result: PredictionResult<string>) {
    if (result.type ==='single-label') {
      console.log(`处理单标签分类结果: ${result.value}`);
    }
  }
}

你可以这样使用这些示例函数:

// 使用示例
const numericResult: PredictionResult<number> = { type: 'numeric', value: 42 };
const multiLabelResult: PredictionResult<string[]> = { type:'multi-label', value: ['label1', 'label2'] };
const singleLabelResult: PredictionResult<string> = { type:'single-label', value: 'label' };

const numericProcessor = new NumericProcessor();
numericProcessor.process(numericResult);

const multiLabelProcessor = new MultiLabelProcessor();
multiLabelProcessor.process(multiLabelResult);

const singleLabelProcessor = new SingleLabelProcessor();
singleLabelProcessor.process(singleLabelResult);