Когда я пытаюсь использовать useState
хук без значения по умолчанию, он набирается неправильно. Он не включает undefined
в возможных типах. Например, в компоненте ниже:
type Color = 'blue' | 'yellow' | 'red';
const MyComponent: React.FC = () => {
const [color, setColor] = useState<Color>();
color.toLocaleLowerCase();
return null;
};
color
набирается как Color
и, следовательно, color.toLocaleLowerCase()
не вызовет никаких машинописных ошибок, хотя на самом деле color
также может быть неопределенным. (что, конечно, привело бы к ошибке времени выполнения).
Я даже попытался явно указать undefined
как возможный тип: const [color, setColor] = useState<Color | undefined>();
но color
по-прежнему набирается как Color
.
Я почти уверен, что раньше это работало. Кто-нибудь еще сталкивался с подобной проблемой?
Некоторые зависимости:
"react": "16.9.0",
"expo": "^37.0.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz",
"@babel/preset-typescript": "^7.8.3",
"@typescript-eslint/parser": "^2.28.0",
"@typescript-eslint/eslint-plugin": "^2.28.0",
"typescript": "^3.8.3",
My tsconfig.json
:
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"jsx": "react-native",
"lib": ["dom", "esnext"],
"moduleResolution": "node",
"noEmit": true,
"skipLibCheck": true,
"noImplicitAny": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"isolatedModules": false,
"baseUrl": "./",
"sourceMap": true,
}
}