面试题答案
一键面试// 类型定义
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);