TypeScript Version: 3.2.0-dev.20180927
Search Terms: react-native, stylesheet
Code
I'm created repo to reproduce:
git clone https://github.com/vovkasm/rn-ts-3.1.1.gitcd rn-ts-3.1.1npm install && npm test
Paste here for easy reading
importReactfrom'react'import{StyleSheet,Text}from'react-native'consts=StyleSheet.create({didNotWork: {fontSize: 16,fontWeight: '900',// if we comment this line, errors gonemarginTop: 5,// if this line commented, errors also gone},work: {fontSize: 18,// fontWeight: '900', // when uncommented also work},})exportconstsample1=<Textstyle={s.work}/>exportconstsample2=<Textstyle={s.didNotWork}/>// ^ this line generate error:// index.tsx:17:30 - error TS2322: Type 'RegisteredStyle<{ fontSize: number; fontWeight: string; marginTop: number; }>' is not assignable to type 'StyleProp<TextStyle>'.// Type 'RegisteredStyle<{ fontSize: number; fontWeight: string; marginTop: number; }>' is not assignable to type 'RecursiveArray<false | TextStyle | RegisteredStyle<TextStyle> | null | undefined>'.// Property 'length' is missing in type 'Number & { __registeredStyleBrand: { fontSize: number; fontWeight: string; marginTop: number; }; }'.// 17 export const sample2 = <Text style={s.didNotWork} />// ~~~~~// node_modules/@types/react-native/index.d.ts:907:5// 907 style?: StyleProp<TextStyle>;// ~~~~~// The expected type comes from property 'style' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<Text> & Readonly<{ children?: ReactNode; }> & Readonly<TextProps>'exportconstsample3=<Textstyle={{fontSize: 16,fontWeight: '900',marginTop: 5}}/>Expected behavior:
No errors
Actual behavior:
An error occured:
index.tsx:17:30 - error TS2322: Type 'RegisteredStyle<{ fontSize: number; fontWeight: string; marginTop: number; }>' is not assignable to type 'StyleProp<TextStyle>'.
Type 'RegisteredStyle<{ fontSize: number; fontWeight: string; marginTop: number; }>' is not assignable to type 'RecursiveArray<false | TextStyle | RegisteredStyle<TextStyle> | null | undefined>'.
Property 'length' is missing in type 'Number & { __registeredStyleBrand: { fontSize: number; fontWeight: string; marginTop: number; }; }'.
17 export const sample2 = <Text style={s.didNotWork} />
~~~~~
node_modules/@types/react-native/index.d.ts:907:5
907 style?: StyleProp<TextStyle>;
~~~~~
The expected type comes from property 'style' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<Text> & Readonly<{ children?: ReactNode; }> & Readonly<TextProps>'
Playground Link:https://github.com/vovkasm/rn-ts-3.1.1
Related Issues: no
Sorry, I can't found a way to reduce this regression farther to smallest possible example. But it looks like this actually typescript regression because:
- It works with ts 3.0.3
- It magically (from my point of view) will pass test if we change code in unrelated parts (comment/uncomment some styles - see comments in index.tsx)
- I traced type definitions of react-native.d.ts and they appears to be correct (again, from my point of view)...
TypeScript Version: 3.2.0-dev.20180927
Search Terms: react-native, stylesheet
Code
I'm created repo to reproduce:
git clone https://github.com/vovkasm/rn-ts-3.1.1.gitcd rn-ts-3.1.1npm install && npm testPaste here for easy reading
Expected behavior:
No errors
Actual behavior:
An error occured:
Playground Link:https://github.com/vovkasm/rn-ts-3.1.1
Related Issues: no
Sorry, I can't found a way to reduce this regression farther to smallest possible example. But it looks like this actually typescript regression because: