Size: a a a

2016 June 18

NK

ID:309556 in TypeScript
PropTypes не нужны
источник

IS

Ivan Starkov in TypeScript
Серег все умные знают это и так 😉
источник

NK

ID:187276728 in TypeScript
сек, попробую так <React.Component<IFooProps, IFooState>>
источник

IS

Ivan Starkov in TypeScript
// pseudo TS defs for recompose
interface ReactElement {
}

// functional component
interface BaseComponent<TProps> {
 (props: TProps): ReactElement;
}

// HOC definition
interface HOC<TIn, TOut> {
 (base: BaseComponent<TOut>):BaseComponent<TIn>;
}

function compose<TIn, TOut, T1>(p0: HOC<TIn, T1>, p1: HOC<T1, TOut>): HOC<TIn, TOut> {
 return base => p0(p1(base));
}

// mapProps HOC
function mapProps<TIn, TOut> (propsMapper: (props: TIn) => TOut): HOC<TIn, TOut> {
 return base => cProps => base(propsMapper(cProps));
}

// simple base component
interface CompProps {text: string, value: string };

// something Like react functional component
const Comp = ({ text, value }) => <ReactElement>`value=${value}  text=${text}`;

const Comp3 = compose(
 mapProps((props: { input: string }) => Object.assign(
   { text: `--${props.input}--` }, // ref 0
   props
 )),
 mapProps((props: { text: string, input: string, value: string }) => Object.assign(
   { value: props.input },         // ref 1
   props
 ))
)(Comp);
источник

IS

Ivan Starkov in TypeScript
собсна что хотим от рекомпоза - имея типы
источник

IS

Ivan Starkov in TypeScript
Чтобы тип Comp3 определялся - в таком раскладе он определяет тип
источник

IS

Ivan Starkov in TypeScript
но приходится явно описывать типы всех HOC
источник

IS

Ivan Starkov in TypeScript
(props: { input: string }) - это как бы задалбывает
источник

IS

Ivan Starkov in TypeScript
или самому заранее прописывать тип компоненты на входе чтобы получить атоматическое разруливание типов внутри хоков?
источник

IS

Ivan Starkov in TypeScript
Я так понимаю и то и то сразу не выйдет
источник

RR

Roman Roman in TypeScript
ID:187276728
я не понимаю зачем мне PropTypes
Перечисли просто чтобы знать какие пропсы нужны компоненту, для типизации они бесполезны
источник

IS

Ivan Starkov in TypeScript
правда я даже доков по ts не читал поэтому могу ошибаца 😬
источник

NK

ID:187276728 in TypeScript
мне надо переварить это, спасибо)
источник

IS

Ivan Starkov in TypeScript
Ivan Starkov
или самому заранее прописывать тип компоненты на входе чтобы получить атоматическое разруливание типов внутри хоков?
Я кстати вообще сомневаюсь что это можно сделать
источник

NK

ID:187276728 in TypeScript
вот так работает:

import { StatelessComponent } from 'react';
export default <StatelessComponent<ICounterProps>>composed;

или тоже самое, только короче:

import { SFC } from 'react';
export default <SFC<ICounterProps>>composed;

мне пока проще всего на этом остановиться тк надо херачить по-резкому дальше (: но я вернусь к этому 100% чуть позже на неделе
источник

🚀c

🚀 Snyp code in TypeScript
Посоветуйте тех. вуз на заочку, в спб с it тематикой.
источник

NK

ID:187276728 in TypeScript
у меня ts-loader + webpack и я хочу вынести пару интерфейсов отдельный файл чтобы их пошарить, я правильно ведь понял что это надо делать в .d.ts? как вы делаете если надо совместно использовать интерфейсы в 2-х разных файлах?
источник

NK

ID:187276728 in TypeScript
хм, просто создал файлик types.d.ts, закинул туда нужные интерфейсы и рефернс не писал даже в рядом лежащих .ts-файлах, а интерфейсы видны и все ок, не понял как это работает и не уверен, что все правильно делаю, но работает
источник

AK

Aleh Kashnikau in TypeScript
ID:187276728
у меня ts-loader + webpack и я хочу вынести пару интерфейсов отдельный файл чтобы их пошарить, я правильно ведь понял что это надо делать в .d.ts? как вы делаете если надо совместно использовать интерфейсы в 2-х разных файлах?
Можно их import/export делать
источник

AK

Aleh Kashnikau in TypeScript
У меня например есть интерфейс UserRepository и у него две имплементации и куева туча использований
источник