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 => {
....
}