effective typescript