Skip to content

Commit 01e0d42

Browse files
author
于金洋
committed
feat(ts-challenge): add isAny
1 parent 302e558 commit 01e0d42

File tree

5 files changed

+45
-0
lines changed

5 files changed

+45
-0
lines changed

src/playground/review/ts/module/a.js

Whitespace-only changes.

src/playground/review/ts/module/a.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { f } from './b.ts';
2+
f();

src/playground/review/ts/module/b.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const a = require('');

src/playground/review/ts/module/b.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
let a = 100;
2+
a++;
3+
export function f() {
4+
console.log(a);
5+
}
6+
7+
a++;
8+
9+
setTimeout(() => {
10+
a++;
11+
}, 1000);

src/type-challenge/hard/IsAny.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//!pass
2+
export type IsAny<T> = helper<T> extends false ? false : true;
3+
type helper<T> = T extends unknown
4+
? unknown extends T
5+
? T extends string
6+
? true
7+
: false
8+
: false
9+
: false;
10+
11+
// theory
12+
type T1 = any extends unknown ? true : false;
13+
type T2 = unknown extends any ? true : false;
14+
type T3 = any extends string ? true : false;
15+
type T4 = unknown extends string ? true : false;
16+
17+
// Test
18+
type S1 = IsAny<any>;
19+
type S2 = IsAny<string>;
20+
type S3 = IsAny<number>;
21+
type S4 = IsAny<void>;
22+
type S5 = IsAny<null>;
23+
type S6 = IsAny<undefined>;
24+
type S7 = IsAny<unknown>;
25+
type S8 = IsAny<never>;
26+
type S9 = IsAny<() => {}>;
27+
type S10 = IsAny<{}>;
28+
type S11 = IsAny<[]>;
29+
30+
type ST = S1;
31+
type SF = S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11;

0 commit comments

Comments
 (0)