How to Make It
Make the filling In a medium saucepan, simmer the milk with the granulated sugar, coconut extract and a pinch of salt over moderate heat, stirring, until the sugar is dissolved, 3 minutes.
In a bowl, beat the egg yolks with the cornstarch. Gradually whisk 1/2 cup of the hot milk into the yolks. Scrape this mixture into the saucepan and cook over moderately high heat, whisking, until thickened, 5 minutes. Remove from the heat. Whisk in the shredded coconut and butter. Scrape into a bowl; let cool.
In another medium bowl, whisk the cream until stiff. Fold the whipped cream into the cooled coconut filling. Press a piece of plastic directly on the surface and refrigerate until well chilled, about 1 hour.
Meanwhile, make the cake Preheat the oven to 350°. Butter two 8-inch round cake pans and line them with parchment paper. Butter the paper and dust the pans with cake flour.
In a medium bowl, whisk the cake flour, baking powder and salt. In another medium bowl, whisk the coconut milk with the whole milk and coconut extract. In a stand mixer fitted with the paddle, beat the 2 sticks of butter with the granulated sugar at medium speed until fluffy, about 2 minutes. At medium-high speed, beat in the egg whites in 3 additions. At low speed, beat in half of the dry ingredients until nearly incorporated. Beat in the wet ingredients, then beat in the remaining dry ingredients until just incorporated; scrape down the side of the bowl as needed.
Pour the batter into the prepared pans and bake for 40 to 45 minutes, until the cakes are golden and springy. Transfer the cakes to a rack to cool for 15 minutes, then turn them out onto the rack, peel off the parchment and let cool completely, about 45 minutes.
Make the frosting In a stand mixer fitted with the paddle, beat the cream cheese with the butter until smooth. At low speed, beat in the confectioners’ sugar, 1 tablespoon of the milk and the coconut extract until just incorporated, then beat at medium speed until light and smooth, 1 to 2 minutes; add another tablespoon of milk if the frosting is too thick.
Using a serrated knife, cut each cake in half horizontally to create 4 layers. Set 1 cake layer cut side up on a cake plate. Spread one-third of the filling on top. Repeat with 2 more cake layers and the remaining two-thirds of filling. Cover with the last cake layer. Freeze until well chilled, about 15 minutes. Frost the cake with a thin layer of frosting and freeze until set, about 15 minutes. Frost the cake with the remaining frosting and coat the side with the coconut flakes. Refrigerate until the frosting is set, about 1 hour, before serving.