mirror of
https://github.com/chenasraf/DefinitelyTyped.git
synced 2026-05-18 01:49:01 +00:00
🤖 Merge PR #65657 Added observ types by @beno-coviu
* Added observ types * Fixed various eslint and prettier issues
This commit is contained in:
64
types/observ/computed.d.ts
vendored
Normal file
64
types/observ/computed.d.ts
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
import { ObservableValue } from './';
|
||||
|
||||
type ValueOfObservable<T> = T extends ObservableValue<infer U> ? U : never;
|
||||
|
||||
declare function computed<O1 extends ObservableValue<any>, R>(
|
||||
// eslint-disable-next-line no-single-element-tuple-type
|
||||
observables: [O1],
|
||||
compute: (observable1: ValueOfObservable<O1>) => R,
|
||||
): ObservableValue<R>;
|
||||
|
||||
declare function computed<O1 extends ObservableValue<any>, O2 extends ObservableValue<any>, R>(
|
||||
observables: [O1, O2],
|
||||
compute: (observable1: ValueOfObservable<O1>, observable2: ValueOfObservable<O2>) => R,
|
||||
): ObservableValue<R>;
|
||||
|
||||
declare function computed<
|
||||
O1 extends ObservableValue<any>,
|
||||
O2 extends ObservableValue<any>,
|
||||
O3 extends ObservableValue<any>,
|
||||
R,
|
||||
>(
|
||||
observables: [O1, O2, O3],
|
||||
compute: (
|
||||
observable1: ValueOfObservable<O1>,
|
||||
observable2: ValueOfObservable<O2>,
|
||||
observable3: ValueOfObservable<O3>,
|
||||
) => R,
|
||||
): ObservableValue<R>;
|
||||
|
||||
declare function computed<
|
||||
O1 extends ObservableValue<any>,
|
||||
O2 extends ObservableValue<any>,
|
||||
O3 extends ObservableValue<any>,
|
||||
O4 extends ObservableValue<any>,
|
||||
R,
|
||||
>(
|
||||
observables: [O1, O2, O3, O4],
|
||||
compute: (
|
||||
observable1: ValueOfObservable<O1>,
|
||||
observable2: ValueOfObservable<O2>,
|
||||
observable3: ValueOfObservable<O3>,
|
||||
observable4: ValueOfObservable<O4>,
|
||||
) => R,
|
||||
): ObservableValue<R>;
|
||||
|
||||
declare function computed<
|
||||
O1 extends ObservableValue<any>,
|
||||
O2 extends ObservableValue<any>,
|
||||
O3 extends ObservableValue<any>,
|
||||
O4 extends ObservableValue<any>,
|
||||
O5 extends ObservableValue<any>,
|
||||
R,
|
||||
>(
|
||||
observables: [O1, O2, O3, O4, O5],
|
||||
compute: (
|
||||
observable1: ValueOfObservable<O1>,
|
||||
observable2: ValueOfObservable<O2>,
|
||||
observable3: ValueOfObservable<O3>,
|
||||
observable4: ValueOfObservable<O4>,
|
||||
observable5: ValueOfObservable<O5>,
|
||||
) => R,
|
||||
): ObservableValue<R>;
|
||||
|
||||
export = computed;
|
||||
19
types/observ/index.d.ts
vendored
Normal file
19
types/observ/index.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
// Type definitions for observ 0.2
|
||||
// Project: https://github.com/Raynos/observ
|
||||
// Definitions by: Ben O'Sullivan <https://github.com/beno-coviu>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare namespace Observable {
|
||||
type RemoveListener = () => void;
|
||||
|
||||
interface ObservableValue<T> {
|
||||
(): T;
|
||||
(listener: (value: T) => void): RemoveListener;
|
||||
|
||||
set: (value: T) => void;
|
||||
}
|
||||
}
|
||||
|
||||
declare function Observable<T>(value: T): Observable.ObservableValue<T>;
|
||||
|
||||
export = Observable;
|
||||
22
types/observ/observ-tests.ts
Normal file
22
types/observ/observ-tests.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import Observable = require('observ');
|
||||
import computed = require('observ/computed');
|
||||
import watch = require('observ/watch');
|
||||
import GeneratorSource = require('observ/source');
|
||||
|
||||
const o1 = Observable('hello');
|
||||
const o2 = Observable('world');
|
||||
const o3 = Observable(false);
|
||||
|
||||
const test = computed([o1, o2, o3], (o1, o2, o3) => `${o1} ${o2}`);
|
||||
|
||||
const removeListener = test(value => {
|
||||
// do something
|
||||
});
|
||||
watch(test, value => {
|
||||
// do something
|
||||
});
|
||||
o1.set('hello,');
|
||||
|
||||
removeListener();
|
||||
|
||||
const o4 = GeneratorSource(value => value, 'hi');
|
||||
5
types/observ/source.d.ts
vendored
Normal file
5
types/observ/source.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { ObservableValue } from './';
|
||||
|
||||
declare function GeneratorSource<T>(generator: (setter: (value: T) => void) => void, initial: T): ObservableValue<T>;
|
||||
|
||||
export = GeneratorSource;
|
||||
23
types/observ/tsconfig.json
Normal file
23
types/observ/tsconfig.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictFunctionTypes": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"observ-tests.ts"
|
||||
]
|
||||
}
|
||||
1
types/observ/tslint.json
Normal file
1
types/observ/tslint.json
Normal file
@@ -0,0 +1 @@
|
||||
{ "extends": "@definitelytyped/dtslint/dt.json" }
|
||||
9
types/observ/watch.d.ts
vendored
Normal file
9
types/observ/watch.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { ObservableValue } from './';
|
||||
|
||||
type RemoveListener = () => void;
|
||||
declare function watch<O extends ObservableValue<any>>(
|
||||
observable: O,
|
||||
listener: (value: O extends ObservableValue<infer V> ? V : never) => void,
|
||||
): RemoveListener;
|
||||
|
||||
export = watch;
|
||||
Reference in New Issue
Block a user