// docs / inheritance

Inheritance

TypeSharp resolves class hierarchies and maps them to TypeScript extends. Base classes are emitted as separate interface files and referenced by name.

C# input

public class BaseEntity
{
    public int Id { get; set; }
    public DateTime CreatedAt { get; set; }
}

public class UserDto : BaseEntity
{
    public string Name { get; set; }
    public string? Email { get; set; }
}

TypeScript output

// BaseEntity.ts
export interface BaseEntity {
    id: number;
    createdAt: string;
}

// UserDto.ts
import type { BaseEntity } from './BaseEntity'

export interface UserDto extends BaseEntity {
    name: string;
    email: string | null;
}

Notes

  • Multi-level inheritance chains are fully resolved.
  • Abstract base classes are emitted as regular interfaces.
  • Interface implementations (IEntity) are not mapped — only class inheritance.