From 9e5dd433e7a8a37715e33ec3460751fb5894993b Mon Sep 17 00:00:00 2001 From: Sojin Park Date: Sat, 18 Jan 2025 21:37:26 +0900 Subject: [PATCH] feat(isPromise): Add isPromise --- docs/ja/reference/predicate/isPromise.md | 34 +++++++++++++++++++ docs/ko/reference/predicate/isPromise.md | 33 ++++++++++++++++++ docs/reference/predicate/isPromise.md | 31 +++++++++++++++++ docs/zh_hans/reference/predicate/isPromise.md | 34 +++++++++++++++++++ src/predicate/index.ts | 1 + src/predicate/isPromise.spec.ts | 19 +++++++++++ src/predicate/isPromise.ts | 20 +++++++++++ 7 files changed, 172 insertions(+) create mode 100644 docs/ja/reference/predicate/isPromise.md create mode 100644 docs/ko/reference/predicate/isPromise.md create mode 100644 docs/reference/predicate/isPromise.md create mode 100644 docs/zh_hans/reference/predicate/isPromise.md create mode 100644 src/predicate/isPromise.spec.ts create mode 100644 src/predicate/isPromise.ts diff --git a/docs/ja/reference/predicate/isPromise.md b/docs/ja/reference/predicate/isPromise.md new file mode 100644 index 000000000..70271f7c7 --- /dev/null +++ b/docs/ja/reference/predicate/isPromise.md @@ -0,0 +1,34 @@ +# isPromise + +指定された値が `Promise` かどうかを確認します。 + +この関数は、提供された値が `Promise` のインスタンスかどうかをテストします。 +値が `Promise` の場合は `true` を返し、そうでない場合は `false` を返します。 + +この関数は、TypeScript で型述語としても機能し、引数の型を `Promise` に狭めます。 + +## インターフェース + +```typescript +function isPromise(value: unknown): value is Promise; +``` + +### パラメータ + +- `value` (`unknown`): `Promise`かどうか確認する値。 + +### 戻り値 + +(`value is Promise`): 値が`Promise`の場合は`true`、そうでない場合は`false`。 + +## 例 + +```typescript +const value1 = new Promise(resolve => resolve()); +const value2 = {}; +const value3 = 123; + +console.log(isPromise(value1)); // true +console.log(isPromise(value2)); // false +console.log(isPromise(value3)); // false +``` diff --git a/docs/ko/reference/predicate/isPromise.md b/docs/ko/reference/predicate/isPromise.md new file mode 100644 index 000000000..579ae59c2 --- /dev/null +++ b/docs/ko/reference/predicate/isPromise.md @@ -0,0 +1,33 @@ +# isPromise + +주어진 값이 `Promise`의 인스턴스인지 확인해요. + +값이 `Promise`이면 `true`, 아니면 `false`를 반환해요. + +TypeScript의 타입 가드로 주로 사용되는데요, 파라미터로 주어진 값을 `Promise`인 타입으로 좁힐 수 있어요. + +## 인터페이스 + +```typescript +function isPromise(value: unknown): value is Promise; +``` + +### 파라미터 + +- `value` (`unknown`): `Promise`인지 확인할 값. + +### 반환 값 + +(`value is Promise`): `value`가 `Promise`이면 `true`, 그렇지 않으면 `false`. + +## 예시 + +```typescript +const value1 = new Promise((resolve) => resolve()); +const value2 = {}; +const value3 = 123; + +console.log(isPromise(value1)); // true +console.log(isPromise(value2)); // false +console.log(isPromise(value3)); // false +``` \ No newline at end of file diff --git a/docs/reference/predicate/isPromise.md b/docs/reference/predicate/isPromise.md new file mode 100644 index 000000000..d9dadcebd --- /dev/null +++ b/docs/reference/predicate/isPromise.md @@ -0,0 +1,31 @@ +# isPromise + +Checks if a given value is `Promise`. + +This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Promise`. + +## Signature + +```typescript +function isPromise(value: unknown): value is Promise; +``` + +### Parameters + +- `value` (`unknown`): The value to check if it is a `Promise`. + +### Returns + +(`value is Promise`): Returns `true` if `value` is a `Promise`, else `false`. + +## Examples + +```typescript +const value1 = new Promise((resolve) => resolve()); +const value2 = {}; +const value3 = 123; + +console.log(isPromise(value1)); // true +console.log(isPromise(value2)); // false +console.log(isPromise(value3)); // false +``` \ No newline at end of file diff --git a/docs/zh_hans/reference/predicate/isPromise.md b/docs/zh_hans/reference/predicate/isPromise.md new file mode 100644 index 000000000..6d7b76b15 --- /dev/null +++ b/docs/zh_hans/reference/predicate/isPromise.md @@ -0,0 +1,34 @@ +# isPromise + +检查给定值是否为 `Promise`。 + +此函数测试提供的值是否为 `Promise` 的实例。 +如果值是 `Promise`,则返回 `true`,否则返回 `false`。 + +此函数还可以作为 TypeScript 中的类型谓词,将参数的类型缩小为 `Promise`。 + +## 签名 + +```typescript +function isPromise(value: unknown): value is Promise; +``` + +### 参数 + +- `value` (`unknown`): 检查是否为`Promise`的值。 + +### 返回值 + +(`value is Promise`): 如果`value`是`Promise`,则返回`true`,否则返回`false`。 + +## 示例 + +```typescript +const value1 = new Promise(resolve => resolve()); +const value2 = {}; +const value3 = 123; + +console.log(isPromise(value1)); // true +console.log(isPromise(value2)); // false +console.log(isPromise(value3)); // false +``` diff --git a/src/predicate/index.ts b/src/predicate/index.ts index 53dac1ec0..2a40ea8f6 100644 --- a/src/predicate/index.ts +++ b/src/predicate/index.ts @@ -16,6 +16,7 @@ export { isNotNil } from './isNotNil.ts'; export { isNull } from './isNull.ts'; export { isPlainObject } from './isPlainObject.ts'; export { isPrimitive } from './isPrimitive.ts'; +export { isPromise } from './isPromise.ts'; export { isRegExp } from './isRegExp.ts'; export { isSet } from './isSet.ts'; export { isString } from './isString.ts'; diff --git a/src/predicate/isPromise.spec.ts b/src/predicate/isPromise.spec.ts new file mode 100644 index 000000000..3c3e45cc9 --- /dev/null +++ b/src/predicate/isPromise.spec.ts @@ -0,0 +1,19 @@ +import { describe, expect, it } from 'vitest'; +import { isPromise } from './isPromise'; + +describe('isPromise', () => { + it('returns true if the value is a Promise', () => { + expect(isPromise(new Promise(resolve => resolve()))).toBe(true); + }); + + it('returns false if the value is not a Promise', () => { + expect(isPromise(null)).toBe(false); + expect(isPromise('')).toBe(false); + expect(isPromise(123)).toBe(false); + expect(isPromise({})).toBe(false); + expect(isPromise([])).toBe(false); + expect(isPromise(new Map())).toBe(false); + expect(isPromise(new Set())).toBe(false); + expect(isPromise(new WeakSet())).toBe(false); + }); +}); diff --git a/src/predicate/isPromise.ts b/src/predicate/isPromise.ts new file mode 100644 index 000000000..d65cba21c --- /dev/null +++ b/src/predicate/isPromise.ts @@ -0,0 +1,20 @@ +/** + * Checks if a given value is `Promise`. + * + * This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to `Promise`. + * + * @param {unknown} value The value to check if it is a `Promise`. + * @returns {value is Promise} Returns `true` if `value` is a `Promise`, else `false`. + * + * @example + * const value1 = new Promise((resolve) => resolve()); + * const value2 = {}; + * const value3 = 123; + * + * console.log(isPromise(value1)); // true + * console.log(isPromise(value2)); // false + * console.log(isPromise(value3)); // false + */ +export function isPromise(value: unknown): value is Promise { + return value instanceof Promise; +}