TypeScript函数类型语法说明

时间:2017-08-03 13:25:24

标签: function typescript types syntax

我正在阅读TypeScript手册,并在函数类型标题下的Functions section中有这个例子(我理解):

ImageminPlugin

接下来是

  

让我们通过查看每个函数来写出函数的完整类型   功能类型的一部分。

和这句语法:

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ImageminPlugin = require('imagemin-webpack-plugin').default;
const path = require('path');

module.exports = {
  context: path.resolve(__dirname, 'static'),
  entry: ['./js/frontend.js','./sass/app.scss'],
  output: {
    path: path.join(__dirname, 'build/public'),
    filename: 'js/frontend.js'
  },
  module: {
    rules: [
      {
        test: /\.(sass|scss)$/,
        loader: ExtractTextPlugin.extract({
          use: [{
            loader: 'css-loader',
            options: {
              sourceMap: true
            }
          },
          {
            loader: 'sass-loader',
            options: {
              sourceMap: true
            }
          }]
        })
      }
    ]
  },
  plugins: [
    new CleanWebpackPlugin('build/public'),
    new ExtractTextPlugin({ 
      filename: 'css/styles.css',
      allChunks: true
    }),
    new CopyWebpackPlugin([
      {
        from: 'img', to: 'img'
      }
    ]),
    new ImageminPlugin({ test: /\.(jpe?g|png|gif|svg)$/i })
  ],
  devtool: 'source-map'
};

有人可以打破这个并解释它,因为我以前从未见过这个并且在手册中找不到解释吗?

2 个答案:

答案 0 :(得分:4)

这一行:

let myAdd: (x: number, y: number) => number =
    function(x: number, y: number): number { return x+y; };

由3部分组成:

(1)变量声明,这部分是let myAdd。我认为这里没有什么可以添加的,就像js一样。

(2)变量的类型:(x: number, y: number) => number
在这里,我们要定义一种函数类型,该函数需要两个类型number,名为xy的参数。 该函数需要返回number

(3)将值赋值给变量:= function(x: number, y: number): number { return x+y; } 除了为参数和返回值添加的类型之外,这也像javascript一样 如果你看一下它,你会发现实际的实现与声明的类型完全匹配。

您也可以这样写:

let myAdd: (x: number, y: number) => number = function(x, y) { return x+y; };

或者:

let myAdd: (x: number, y: number) => number = (x, y) => { return x+y; };

答案 1 :(得分:1)

第一行:

let myAdd: (x: number, y: number) => number

声明变量“myAdd”的类型。 Typescript可以在第一个例子中自动推断出来,或者(第二个例子显示)你可以隐式地告诉Typescript它应该期待什么。

第二行:

function(x: number, y: number): number { return x+y; };

指的是已分配给变量“myAdd”的函数本身的类型。

有一个更简单的例子来说明同样的事情:

let myString: (input: string) => string = (input: string) => input;

或者,隐式声明变量类型的另一个例子是:

let myNumber: number = 10;

以上两个都告诉Typescript变量应该是什么。