Typescript 面試問題

時允發表於2019-02-16

void 和 undefined 有什麼區別?

什麼是 never 型別?

下面程式碼會不會報錯?怎麼解決?

const obj = {
    a: 1,
    b: `string`,
};
  
obj.c = null;

readonly 和 const 有什麼區別?

下面程式碼中,foo 的型別應該如何宣告

function foo (a: number) {
 
    return a + 1;
 
}
 
foo.bar = 123;

下面程式碼中,foo 的型別如何宣告

let foo = {};
  
for (let i = 0; i< 100; i++) {
    foo[String(i)] = i;
}

實現 MyInterface

interface MyInterface {
    ...
}
class Bar implements MyInterface {
    constructor(public name: string) {}
}
class Foo implements MyInterface {
    constructor(public name: string) {}
}
  
function myfn(Klass: MyInterface, name: string) {
    return new Klass(name);
}
  
myfn(Bar);
myfn(Foo);

什麼是 Abstract Class?

什麼是 class mixin, 如何實現?

typeof 關鍵詞有什麼用?

keyof 關鍵詞有什麼用?

下面程式碼中,foo 的型別如何宣告

function fn(value: number): string {
    return String(value);
}
const foo = fn;

下面程式碼會導致 TS 編譯失敗,如何修改 getValue 的型別宣告。

function getValue() {
    return this.value;
}
  
getValue();

下面是 vue-class-component 的部分程式碼,解釋為什麼會有多個 Component 函式的宣告,作用是什麼?TS 官方文件的那一節有對應的解釋文件?

function Component <U extends Vue>(options: ComponentOptions<U>): <V extends VueClass>(target: V) => V
function Component <V extends VueClass>(target: V): V
function Component <V extends VueClass, U extends Vue>(
 options: ComponentOptions<U> | V
): any {
  if (typeof options === `function`) {
    return componentFactory(options)
  }
  return function (Component: V) {
    return componentFactory(Component, options)
  }
}

如何宣告 foo 的型別?

const foo = new Map();
foo.set(`bar`, 1);

如何宣告 getProperty,以便能檢查出第八行將會出現的執行錯誤。

function getProperty(obj, key) {
    return obj[key].toString();
}
 
let x = { a: 1, b: 2, c: 3, d: 4 };
 
getProperty(x, "a");
getProperty(x, "m");

型別宣告裡 「&」和「|」有什麼作用?

下面程式碼裡「date is Date」有什麼作用?

function isDate(date: any): date is Date {
  if (!date) return false;
  return Object.prototype.toString.call(date) === `[object Date]`;
}

tsconfig.json 裡 –strictNullChecks 引數的作用是什麼?

interface 和 type 宣告有什麼區別?

如何完善 Calculator 的宣告。

interface Calculator {
    ...
}
 
let calcu: Calculator;
calcu(2)
  .multiply(5)
  .add(1)

「import … from」、「 import … = require()」 和 「import(path: string)」有什麼區別?

declare 關鍵字有什麼用?

module 關鍵字有什麼用?

如何處理才能在 TS 中引用 CSS 或者 圖片使之不報錯?

import "./index.scss";
import imgPath from "./home.png";

編寫 d.ts 來宣告下面的 js 檔案

class Foo {
}
module.exports = Foo;
module.exports.Bar = 1;

namespace 和 module 有什麼區別

如何實現 module alias?編譯成 JS 能否直接執行?

import Bar from `@src/Bar`;

哪些宣告型別既可以當做 type 也可以當做 value?

相關文章