面试题答案
一键面试// 定义按钮状态的联合类型
type ButtonState = 'normal' | 'loading' | 'disabled';
// 定义样式类名和点击事件处理函数的类型
type ButtonStyleAndHandler = {
className: string;
onClick: () => void;
};
// 根据按钮状态返回对应的样式类名和点击事件处理函数
function getButtonStyleAndHandler(state: ButtonState): ButtonStyleAndHandler {
switch (state) {
case 'normal':
return {
className: 'btn-normal',
onClick: () => console.log('Button clicked in normal state')
};
case 'loading':
return {
className: 'btn-loading',
onClick: () => console.log('Button is in loading state, cannot click')
};
case 'disabled':
return {
className: 'btn-disabled',
onClick: () => console.log('Button is disabled, cannot click')
};
}
}
这样,通过ButtonState
联合类型确保了状态类型的安全性,在getButtonStyleAndHandler
函数中根据不同状态返回对应的样式类名和点击事件处理函数。