簡體   English   中英

為什么 typescript 將泛型類型推斷為類型“”

[英]Why is typescript inferring the generic type to be type ""

我創建了這個名為 StateWithValidation 的 React 組件。

 import { useStateWithValidation } from "./useStateWithValidation"; export const StateWithValidation = () => { const [username, setUserName, isValid] = useStateWithValidation( (value: string) => value.length > 5, "" ); return ( <div> <div>Valid: {isValid.toString()}</div> <input type="text" value={username} onChange={(e) => setUserName(e.target.value)} /> </div> ); };

我有一個通用的自定義鈎子,它驗證並處理用戶輸入更改。

 import { useCallback, useState } from "react"; type useStateValidationFn = <U>( validationFunc: (value: U) => boolean, initialState: U ) => [U, (nextState: U) => void, boolean]; export const useStateWithValidation: useStateValidationFn = ( validationFunc, initialValue ) => { const [state, setState] = useState(initialValue); const [isValid, setIsValid] = useState(() => validationFunc(state)); const onChange = useCallback( (nextState) => { setState(nextState); setIsValid(validationFunc(nextState)); }, [validationFunc] ); return [state, onChange, isValid]; };

為什么我在 React 組件中輸入的時候,泛型類型的值是 "" 而不是字符串。

在此處輸入圖像描述

嘗試如下更改

const [username, setUserName, isValid] = useStateWithValidation(
    (value: string) => value.length > 5,
    new String()
  );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM