1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
//// [tests/cases/compiler/typeInferenceWithExcessPropertiesJsx.tsx] ////
=== typeInferenceWithExcessPropertiesJsx.tsx ===
/// <reference path="react16.d.ts" />
import React = require('react');
>React : typeof React
type TranslationEntry = {
>TranslationEntry : { args: [] | [unknown]; }
args: [] | [unknown];
>args : [] | [unknown]
}
type Translations = {
>Translations : { a: { args: [string];}; b: { args: [];}; }
a: { args: [string] },
>a : { args: [string]; }
>args : [string]
b: { args: [] }
>b : { args: []; }
>args : []
}
type TProps<Entry extends TranslationEntry> = {
>TProps : TProps<Entry>
getTranslationEntry: (allTranslations: Translations) => Entry,
>getTranslationEntry : (allTranslations: Translations) => Entry
>allTranslations : Translations
} & (Entry["args"] extends [unknown] ? {
args: Entry["args"][0]
>args : Entry["args"][0]
} : {});
declare function T<Entry extends TranslationEntry>(
>T : <Entry extends TranslationEntry>(props: TProps<Entry>) => JSX.Element
props: TProps<Entry>
>props : TProps<Entry>
): JSX.Element;
>JSX : any
<T getTranslationEntry={(allTranslations) => allTranslations.a} args="a" />
><T getTranslationEntry={(allTranslations) => allTranslations.a} args="a" /> : JSX.Element
>T : <Entry extends TranslationEntry>(props: TProps<Entry>) => JSX.Element
>getTranslationEntry : (allTranslations: Translations) => { args: [string]; }
>(allTranslations) => allTranslations.a : (allTranslations: Translations) => { args: [string]; }
>allTranslations : Translations
>allTranslations.a : { args: [string]; }
>allTranslations : Translations
>a : { args: [string]; }
>args : string
|