Можно ли вычислить, поддерживается ли IE из настроек браузера? - PullRequest
0 голосов
/ 23 апреля 2019

В postcss / autoprefixer нам нужно установить параметр grid, только если Internet Explorer 10-11 поддерживает.

grid (false | "autoplace" | "no-autoplace"): должен ли Autoprefixer добавлять префиксы IE 10-11 для свойств макета сетки?

Что если мы заранее не знаем, какой браузер будет поддерживаться?В приведенном ниже коде TypeScript нам нужно вычислить isSomeVersionOfInternetExplorerSupported.Мы можем проверить массив supportedBrowsers внутри кода (может быть любое допустимое значение свойства browserslist пакета browserslist, например, last 1 version, not dead и т. Д.), Однако заранее не знаем элементов этого массива.

class BroserslistHelper {

  private supportedBrowsers: Array<string>;

  constructor(supportedBrowsers: Array<string>) {
    this.supportedBrowsers = supportedBrowsers;    
  }

  get autoprefixerSetitngs: autoprefixer.Options {
     return {
       browsers: this.supportedBrowsers,
       grid: this.isSomeVersionOfInternetExplorerSupported ? 'autoplace' : false
     }
  }

  get isSomeVersionOfInternetExplorerSupported(): boolean {

      let someVersionOfInternetExplorerSupported = false;

      this.supportedBrowsers.forEach( (browser: string) => {
          // we need to compute is something ...
      })

      return someVersionOfInternetExplorerSupported;
  }
}

Если Internet Explorer явно установлен в массиве (ie), это будет просто, но что если у нас есть только такие браузеры, как >5%, cover 99.5%, not dead и т. Д.

...