Prie funkcijos parametrų nurodome ko tikimės. void - funkcija negražins nieko

function doSomething(name: string): void{
 console.log(name)
}

doSomething('text')
  • kuri gauną klaidą ir nebaigia
  • kuri pastoviai dirba ir nebaigia
function throwError(message: string): never{
 for (let i = 0; i < 10; i++){
  if(i === 5) {
   throw new Error(message)
  }
 }
}

kaip ir nebaigė, bet bus klaida.

klaida, never negali pasiekti pabaigos.

function throwError(message: string): never{
 for (let i = 0; i < 10; i++){
  if(i === 5) {
   throw new Error(message)
  }
 }
}

klaida:

function throwError(message: string): never{
 throw new Error(message)
}

amžinas:

function throwError(message: string): never{
 while(true){
 }
}
function add(a: number, b: number): number {
 return a + b
}
function toUpperCase(str: string): string {
 return str.trim().toUpperCase()
}
function multiple(a: string, b: number): string | number {
 return a + b
}

Interfeisus galima nurodyti iškviečiant funkciją

interface MyPosition {
 x: number | undefined
 y: number | undefined
}

interface MyPositionWithoutDefault extends MyPosition {
 default: string
}

function position(): MyPosition
function position(a: number): MyPositionWithoutDefault
function position(a: number, b: number): MyPosition

function position(a?: number, b?: number) {
 if (!a && !b) {
  return { x: undefined, y: undefined }
 }

 if (a && !b) {
  return {x: a, y: undefined, default: a.toString()}
 }

 return {x: a, y: b}
}

console.log('Empty: ', position())
console.log('One param: ', position(42))
console.log('Two params: ', position(10, 15))
const text = (a: number): number => {
  ....
}