Reactjs React-Typescript:键入函数以获取通用字符串文字

Reactjs React-Typescript:键入函数以获取通用字符串文字,reactjs,typescript,Reactjs,Typescript,我有一个可重用的组件,我经常在我的应用程序中使用它来作为一个组显示多个复选框 我的问题出现在传递用于处理检查操作的函数时,因为它们通常是专门键入到我显示的复选框中的 type Status = "Enabled" | "Disabled"; function updateStatus(status: Status) { // Some side effects } 但在我的可重用组件中,我尝试使用所需的道具类型使其尽可能通用: type CheckboxProps = { to

我有一个可重用的组件,我经常在我的应用程序中使用它来作为一个组显示多个复选框

我的问题出现在传递用于处理检查操作的函数时,因为它们通常是专门键入到我显示的复选框中的

type Status = "Enabled" | "Disabled";

function updateStatus(status: Status) {
   // Some side effects
}
但在我的可重用组件中,我尝试使用所需的道具类型使其尽可能通用:

type CheckboxProps = {
    toggleCheckbox: (title: string) => void;
    // Other props
}
显然,这是失败的。我尝试过使道具通用并扩展它们,但这两个函数也没有相互扩展

目前,我在传球时使用作为来处理这个问题,但我宁愿避免这样做


可以用这种方式为任何类型的字符串文字联合生成泛型prop函数吗?

您可以将您的类型设置为泛型。所以当你初始化它时,你可以说它是一种状态类型。点是泛型的,必须在初始化函数之前定义

type Status = 'Enabled' | 'Disabled';

function updateStatus(status: Status) {
  // Some side effects
}

type CheckboxProps <T extends string> = {
  toggleCheckbox: (title: T) => void;
  // Other props
};

const prop: CheckboxProps<Status> = {
  toggleCheckbox: updateStatus,
};

prop.toggleCheckbox('Disabled');
type Status='Enabled'|'Disabled';
函数updateStatus(状态:status){
//一些副作用
}
类型CheckboxProps={
toggleCheckbox:(标题:T)=>无效;
//其他道具
};
常量属性:CheckboxProps={
toggleCheckbox:updateStatus,
};
道具切换复选框(“禁用”);