mirror of
https://github.com/sharkdp/bat.git
synced 2025-10-17 09:13:51 +01:00
chore: add a test typescript file
This commit is contained in:
57
tests/syntax-tests/highlighted/Markdown/typescript.md
vendored
Normal file
57
tests/syntax-tests/highlighted/Markdown/typescript.md
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
[38;2;253;151;31m#[0m[38;2;253;151;31m [0m[38;2;253;151;31mTypescript test[0m
|
||||
|
||||
[38;2;255;255;255m```[0m[38;2;190;132;255mtypescript[0m
|
||||
[38;2;255;255;255menum Status {[0m
|
||||
[38;2;255;255;255m Pending,[0m
|
||||
[38;2;255;255;255m InProgress,[0m
|
||||
[38;2;255;255;255m Completed,[0m
|
||||
[38;2;255;255;255m}[0m
|
||||
|
||||
[38;2;255;255;255minterface Task {[0m
|
||||
[38;2;255;255;255m id: number;[0m
|
||||
[38;2;255;255;255m title: string;[0m
|
||||
[38;2;255;255;255m status: Status;[0m
|
||||
[38;2;255;255;255m assignee?: string;[0m
|
||||
[38;2;255;255;255m}[0m
|
||||
|
||||
[38;2;255;255;255mclass TaskManager<T extends Task> {[0m
|
||||
[38;2;255;255;255m private tasks: T[] = [];[0m
|
||||
|
||||
[38;2;255;255;255m addTask(task: T): void {[0m
|
||||
[38;2;255;255;255m this.tasks.push(task);[0m
|
||||
[38;2;255;255;255m }[0m
|
||||
|
||||
[38;2;255;255;255m getTasksByStatus(status: Status): T[] {[0m
|
||||
[38;2;255;255;255m return this.tasks.filter(task => task.status === status);[0m
|
||||
[38;2;255;255;255m }[0m
|
||||
|
||||
[38;2;255;255;255m async fetchTasks(): Promise<T[]> {[0m
|
||||
[38;2;255;255;255m // Simulate async fetch[0m
|
||||
[38;2;255;255;255m return new Promise(resolve => setTimeout(() => resolve(this.tasks), 500));[0m
|
||||
[38;2;255;255;255m }[0m
|
||||
[38;2;255;255;255m}[0m
|
||||
|
||||
[38;2;255;255;255m// Type guard[0m
|
||||
[38;2;255;255;255mfunction isTask(obj: any): obj is Task {[0m
|
||||
[38;2;255;255;255m return typeof obj.id === 'number' && typeof obj.title === 'string';[0m
|
||||
[38;2;255;255;255m}[0m
|
||||
|
||||
[38;2;255;255;255m// Usage[0m
|
||||
[38;2;255;255;255mconst manager = new TaskManager<Task>();[0m
|
||||
[38;2;255;255;255mmanager.addTask({ id: 1, title: "Write docs", status: Status.Pending });[0m
|
||||
[38;2;255;255;255mmanager.addTask({ id: 2, title: "Review PR", status: Status.InProgress, assignee: "Alice" });[0m
|
||||
|
||||
[38;2;255;255;255m(async () => {[0m
|
||||
[38;2;255;255;255m const allTasks = await manager.fetchTasks();[0m
|
||||
[38;2;255;255;255m allTasks.forEach(task => {[0m
|
||||
[38;2;255;255;255m if (isTask(task)) {[0m
|
||||
[38;2;255;255;255m console.log(`Task #${task.id}: ${task.title} [${Status[task.status]}]`);[0m
|
||||
[38;2;255;255;255m }[0m
|
||||
[38;2;255;255;255m });[0m
|
||||
[38;2;255;255;255m})();[0m
|
||||
|
||||
[38;2;255;255;255m// Type assertion[0m
|
||||
[38;2;255;255;255mconst unknownValue: unknown = { id: 3, title: "Test", status: Status.Completed };[0m
|
||||
[38;2;255;255;255mconst assertedTask = unknownValue as Task;[0m
|
||||
[38;2;255;255;255mconsole.log(assertedTask.title);[0m
|
||||
[38;2;255;255;255m```[0m
|
57
tests/syntax-tests/source/Markdown/typescript.md
vendored
Normal file
57
tests/syntax-tests/source/Markdown/typescript.md
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
# Typescript test
|
||||
|
||||
```typescript
|
||||
enum Status {
|
||||
Pending,
|
||||
InProgress,
|
||||
Completed,
|
||||
}
|
||||
|
||||
interface Task {
|
||||
id: number;
|
||||
title: string;
|
||||
status: Status;
|
||||
assignee?: string;
|
||||
}
|
||||
|
||||
class TaskManager<T extends Task> {
|
||||
private tasks: T[] = [];
|
||||
|
||||
addTask(task: T): void {
|
||||
this.tasks.push(task);
|
||||
}
|
||||
|
||||
getTasksByStatus(status: Status): T[] {
|
||||
return this.tasks.filter(task => task.status === status);
|
||||
}
|
||||
|
||||
async fetchTasks(): Promise<T[]> {
|
||||
// Simulate async fetch
|
||||
return new Promise(resolve => setTimeout(() => resolve(this.tasks), 500));
|
||||
}
|
||||
}
|
||||
|
||||
// Type guard
|
||||
function isTask(obj: any): obj is Task {
|
||||
return typeof obj.id === 'number' && typeof obj.title === 'string';
|
||||
}
|
||||
|
||||
// Usage
|
||||
const manager = new TaskManager<Task>();
|
||||
manager.addTask({ id: 1, title: "Write docs", status: Status.Pending });
|
||||
manager.addTask({ id: 2, title: "Review PR", status: Status.InProgress, assignee: "Alice" });
|
||||
|
||||
(async () => {
|
||||
const allTasks = await manager.fetchTasks();
|
||||
allTasks.forEach(task => {
|
||||
if (isTask(task)) {
|
||||
console.log(`Task #${task.id}: ${task.title} [${Status[task.status]}]`);
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
||||
// Type assertion
|
||||
const unknownValue: unknown = { id: 3, title: "Test", status: Status.Completed };
|
||||
const assertedTask = unknownValue as Task;
|
||||
console.log(assertedTask.title);
|
||||
```
|
Reference in New Issue
Block a user