MST

星途 面试题库

面试题:TypeScript联合类型与交叉类型在复杂数据结构中的运用

假设有一个数组,数组元素可以是字符串类型或者包含`id`(数字类型)和`value`(字符串类型)属性的对象类型,使用联合类型定义该数组类型。然后编写一个函数,该函数接受这个数组作为参数,遍历数组,对于字符串元素直接打印,对于对象元素,打印`id`和`value`。接着,定义一个交叉类型,它结合了一个具有`length`属性(数字类型)的接口和一个具有`toString`方法(返回字符串)的接口,创建一个符合该交叉类型的变量并进行相关操作展示。请给出完整的TypeScript代码实现。
19.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义数组联合类型
type ArrayElement = string | { id: number; value: string };
type MyArray = ArrayElement[];

// 定义遍历打印函数
function printArrayElements(arr: MyArray) {
    arr.forEach(element => {
        if (typeof element ==='string') {
            console.log(element);
        } else {
            console.log(`id: ${element.id}, value: ${element.value}`);
        }
    });
}

// 定义交叉类型
interface HasLength {
    length: number;
}

interface HasToString {
    toString(): string;
}

type CombinedType = HasLength & HasToString;

// 创建符合交叉类型的变量并进行操作展示
const myVar: CombinedType = {
    length: 5,
    toString() {
        return `Length is ${this.length}`;
    }
};

console.log(myVar.toString());

// 测试数组函数
const testArray: MyArray = ['string element', { id: 1, value: 'object value' }];
printArrayElements(testArray);