Skip to content

Commit 27f05b5

Browse files
committed
Added CompleteType
1 parent 0e02bcd commit 27f05b5

File tree

14 files changed

+96
-6
lines changed

14 files changed

+96
-6
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Changelog
2+
3+
### 1.1.0
4+
5+
#### Added
6+
7+
- `CompleteType`

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,25 @@ TypeScript common types.
1010

1111
# Reference
1212

13+
## Class
14+
15+
### Complete
16+
17+
```typescript
18+
import type {
19+
CompleteType
20+
} from '@corefunc/type/class/complete.type';
21+
interface UserInterface {
22+
name: string;
23+
zip: string;
24+
}
25+
// Forces class to implement all interface properties.
26+
class User implements CompleteType<UserInterface> {
27+
public name: string;
28+
public zip: string;
29+
}
30+
```
31+
1332
## Number
1433

1534
### Float

class/complete.type.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/**
2+
* @description Forces class to implement all interface properties.
3+
* @summary ```import type { CompleteType } from '@corefunc/type/class/complete.type';```
4+
* @since 1.1.0
5+
*/
6+
export declare type CompleteType<Interface> = {
7+
[Property in keyof Required<Interface>]: Pick<Interface, Property> extends Required<Pick<Interface, Property>> ? Interface[Property] : Interface[Property] | undefined;
8+
};

class/complete.type.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* @description Forces class to implement all interface properties.
3+
* @summary ```import type { CompleteType } from '@corefunc/type/class/complete.type';```
4+
* @since 1.1.0
5+
*/
6+
export type CompleteType<Interface> = {
7+
[Property in keyof Required<Interface>]: Pick<
8+
Interface,
9+
Property
10+
> extends Required<Pick<Interface, Property>>
11+
? Interface[Property]
12+
: Interface[Property] | undefined;
13+
};

class/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./complete.type";

class/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./complete.type";

index.cjs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
var desc = Object.getOwnPropertyDescriptor(m, k);
5+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6+
desc = { enumerable: true, get: function() { return m[k]; } };
7+
}
8+
Object.defineProperty(o, k2, desc);
9+
}) : (function(o, m, k, k2) {
10+
if (k2 === undefined) k2 = k;
11+
o[k2] = m[k];
12+
}));
13+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
14+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15+
};
16+
exports.__esModule = true;
17+
__exportStar(require("./class"), exports);
18+
__exportStar(require("./number"), exports);
19+
__exportStar(require("./string"), exports);

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
export * from "./class";
12
export * from "./number";
23
export * from "./string";

index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
"use strict";
22
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
33
if (k2 === undefined) k2 = k;
4-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4+
var desc = Object.getOwnPropertyDescriptor(m, k);
5+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6+
desc = { enumerable: true, get: function() { return m[k]; } };
7+
}
8+
Object.defineProperty(o, k2, desc);
59
}) : (function(o, m, k, k2) {
610
if (k2 === undefined) k2 = k;
711
o[k2] = m[k];
@@ -10,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1014
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1115
};
1216
exports.__esModule = true;
17+
__exportStar(require("./class"), exports);
1318
__exportStar(require("./number"), exports);
1419
__exportStar(require("./string"), exports);

index.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from "./class";
2+
export * from "./number";
3+
export * from "./string";

0 commit comments

Comments
 (0)