export interface User {
name: string;
age: number;
}
export function createUser(name: string, age: number): User {
return { name, age };
}
export class UserManager {
users: User[] = [];
}
interface User {
name: string;
age: number;
}
function createUser(name: string, age: number): User {
return { name, age };
}
export { User, createUser };
function createUser(name: string, age: number) {
return { name, age };
}
export { createUser as create };
export default class User {
name: string;
age: number;
}
class User {
name: string;
age: number;
}
export default User;
import { User, createUser } from './user';
let user: User = createUser('John', 25);
import { User as UserType } from './user';
let user: UserType = { name: 'John', age: 25 };
import * as UserModule from './user';
let user: UserModule.User = UserModule.createUser('John', 25);
import User from './user';
let user = new User();
import User, { createUser } from './user';
export { User } from './user';
export { Product } from './product';
export { Order } from './order';
import { User, Product, Order } from './models';
export { User as UserModel } from './user';
export * from './user';
export * from './product';
async function loadUser() {
const userModule = await import('./user');
const user = userModule.createUser('John', 25);
return user;
}
import('./user').then(module => {
const user = module.createUser('John', 25);
});
namespace Validation {
export interface StringValidator {
isValid(s: string): boolean;
}
export class EmailValidator implements StringValidator {
isValid(s: string): boolean {
return /\S+@\S+\.\S+/.test(s);
}
}
}
let validator = new Validation.EmailValidator();
import { User } from './user';
import { Product } from '../models/product';
import * as React from 'react';
import { Component } from '@angular/core';
declare module 'my-library' {
export function doSomething(): void;
}
import { doSomething } from 'my-library';
declare global {
interface Window {
myCustomProperty: string;
}
}
export {};
import { Observable } from 'rxjs';
declare module 'rxjs' {
interface Observable<T> {
myCustomMethod(): Observable<T>;
}
}