Cyclejs 中的 Typescript 打字以实现 Mostjs 流互操作性?
Typescript typings in Cyclejs for Mostjs stream interoperability?
我有一个小组件,我想提供 属性 类似于 this example
的类型
我正在使用带有 mostjs 流库的 cyclejs。
这个有效:
import { Sources } from '@cycle/run';
import { setup } from '@cycle/most-run';
import { div, input, span, makeDOMDriver, MainDOMSource } from '@cycle/dom';
import { of, Stream, startWith } from 'most';
function Checkbox(sources: Sources) {
const click$ = sources.DOM.select('.checkbox').events('click');
const toggleCheck$ = click$
.filter(ev => ev.target instanceof HTMLInputElement)
.map(ev => ev.target.checked)
const toggled$ = startWith(false, toggleCheck$)
const vdom$ = toggled$.map(toggled =>
div('.checkbox', [
input('.checkbox', {attrs: {type: 'checkbox', checked: toggled}}),
'Label Here'
])
);
return {
DOM: vdom$
}
}
const {sources, sinks, run} = setup(Checkbox, { DOM: makeDOMDriver('#mount')});
const dispose = run();
类型 Sources
就是:
export declare type Sources = {
[name: string]: any;
}
我想为 CheckboxSources
创建显式类型:
import { DOMSource } from '@cycle/dom';
export type CheckboxSources = {
DOM: DOMSource,
props$: Stream<CheckboxProps>
}
但是 DOMSource
使用 xstream
中的 Stream
--- 我需要在两个流库之间进行转换吗?我以为 most-run
会抽象掉那个转换?
我可以为 DOM 使用类型 any
,但更喜欢显式类型。
对于 most.js with Cycle DOM,你需要单独抓取打字:
import {DOMSource} from '@cycle/dom/most-typings.d.ts'
我们尝试支持所有具有零配置的流库的类型,但是 TypeScript 不能支持泛型中的泛型(例如 S<T>
,其中 S
将是来自xstream 或大多数,并且 T
可能是一个字符串),不幸的是,这个功能似乎不可能。
我有一个小组件,我想提供 属性 类似于 this example
的类型我正在使用带有 mostjs 流库的 cyclejs。
这个有效:
import { Sources } from '@cycle/run';
import { setup } from '@cycle/most-run';
import { div, input, span, makeDOMDriver, MainDOMSource } from '@cycle/dom';
import { of, Stream, startWith } from 'most';
function Checkbox(sources: Sources) {
const click$ = sources.DOM.select('.checkbox').events('click');
const toggleCheck$ = click$
.filter(ev => ev.target instanceof HTMLInputElement)
.map(ev => ev.target.checked)
const toggled$ = startWith(false, toggleCheck$)
const vdom$ = toggled$.map(toggled =>
div('.checkbox', [
input('.checkbox', {attrs: {type: 'checkbox', checked: toggled}}),
'Label Here'
])
);
return {
DOM: vdom$
}
}
const {sources, sinks, run} = setup(Checkbox, { DOM: makeDOMDriver('#mount')});
const dispose = run();
类型 Sources
就是:
export declare type Sources = {
[name: string]: any;
}
我想为 CheckboxSources
创建显式类型:
import { DOMSource } from '@cycle/dom';
export type CheckboxSources = {
DOM: DOMSource,
props$: Stream<CheckboxProps>
}
但是 DOMSource
使用 xstream
中的 Stream
--- 我需要在两个流库之间进行转换吗?我以为 most-run
会抽象掉那个转换?
我可以为 DOM 使用类型 any
,但更喜欢显式类型。
对于 most.js with Cycle DOM,你需要单独抓取打字:
import {DOMSource} from '@cycle/dom/most-typings.d.ts'
我们尝试支持所有具有零配置的流库的类型,但是 TypeScript 不能支持泛型中的泛型(例如 S<T>
,其中 S
将是来自xstream 或大多数,并且 T
可能是一个字符串),不幸的是,这个功能似乎不可能。