繁体   English   中英

类型 '(text: string) => void' 不可分配给类型 '() => void'

Type '(text: string) => void' is not assignable to type '() => void'

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在为 TextInput 创建一个自定义组件。 但是当我尝试将 function 道具传递给自定义组件时遇到了问题。 这是代码

// Screen.tsx
export const RegisterScreen = ({props}: Props) => {
  const [text, setText] = useState("");
 
  const onChangeInputText = (text: string) => setText(text);

  return (
    <View>
        <CustomInput onChangeText={onChangeInputText} text={text} />
    </View>

// CustomTextInput.tsx
type Props = {
  onChangeText: () => void;
  text?: string;
};

export const CustomInput = ({ onChangeText, text }: Props) => {
  return (
    <TextInput
      style={styles.container}
      onChangeText={onChangeText}
      value={text}
      placeholder="Type here"
    />
  );
};

使用此代码,我收到此错误

Type '(text: string) => void' is not assignable to type '() => void'

我想我知道是什么原因造成的(它可能在类型声明上?)但由于这实际上是我第一次尝试 TypeScript,我真的不知道如何解决这个问题。 首先尝试使用谷歌搜索,但我没有发现任何类似于我的错误。

1 个回复

这个 function 的类型定义说“嘿,我需要传递一个字符串才能完成我的工作”:

const onChangeInputText = (text: string) => setText(text);

但是 onChangeText 属性的定义说“我不会向你传递任何东西”:

type Props = {
  onChangeText: () => void;
  text?: string;
};

您的代码实际上将传递一个字符串,因此您只需要更新道具上的类型。

type Props = {
  onChangeText: (val: string) => void;
  text?: string;
}
4 类型'()=> {}不能指定类型'()=> void'

我理解错误消息: 类型'()=&gt; {}不能指定类型'()=&gt; void' 好吧,它告诉我有一个类型转换问题。 但是我无法弄清楚为什么编译器认为类型不一样。 代码的背景是我有一个给出函数的typescript类,然后将它存储为成员。 我希望能够使用空的'no ...

5 void 不可分配给 > '() => void' 类型的参数

我有一个 angular 应用程序,它最初是在 Angular 2 中编写的,然后升级到 7,然后升级到 9,现在尝试从 11 开始。 我的代码有一个 function ,它在最初加载应用程序时通过套接字从后端获取用户的通知计数(下面的代码),这工作正常,但在 Angular 11 中不再这样做。我 ...

8 类型 void 不可分配给数组

我正在尝试创建一种方法,该方法从数组的每个元素的字符串(包含数字的字符串)中删除所有零; 我收到此错误“类型 void 不可分配给程序 [] ...

2020-07-15 12:19:13 4 224   angular
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM